Я новичок в docker и пробовал простейший docker-compose.yml, показывая приветственную мировую страницу, которая будет построена поверх этого, в конечном итоге с полным стекем LEMP , который будет иметь тот же конфиг, что и мой сервер. Однако большинство учебников устарели и существует так много способов использования docker , что я не могу найти его, используя только Docker compose v3, который по-прежнему актуальен. Я проверил документы, и это ужасно запутывает и для новичков, и пыталось заставить его работать последние 5 часов, поэтому я подумал, что попрошу SO.
docker-compose.yml
version: '3'
services:
web:
image: bitnami/nginx:1.10.3-r0 #using this version as it's the same on my server
volumes:
- "./test.conf:/etc/nginx/sites-available/test.local"
- "./test.conf:/etc/nginx/sites-enabled/test.local"
- "./code:/var/www/html" #code contains only a basic index.html file
ports:
- "80:80"
test.conf
server {
listen 80;
listen [::]:80;
server_name test.local; index index.html; #Only a basic helloworld index.html file
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html;
}
Нужен ли мне файл Dockerfile с этим? В учебниках не упоминается, что это необходимо.
ПРИМЕЧАНИЕ.
Пробовал добавить том
- "./default.conf:/etc/nginx/conf.d/default.conf"
, но ничего не меняется и страница приветствия все еще загружается, а с помощью nginx: latest я получаю очень многословную ошибку, содержащую эту фразу: "unknown: пытаетесь ли вы установить каталог в файл (или наоборот)? если указанный путь к узлу существует и является ожидаемым типом".
ОБНОВЛЕНИЕ about docker-compose.yml:
- Без строки
"./code:/usr/share/nginx/html"
, папка/usr/share/nginx/html
содержит файл index.html по умолчанию (ожидается) - С помощью строки
"./code:/usr/share/nginx/html"
,/usr/share/nginx/html
EMPTY! - С помощью строки
"./:/usr/share/nginx/html"
в папке/usr/share/nginx/html
есть и пустая папка "code", и куча случайные тестовые файлы, которые я удалил некоторое время назад.
Между попытками я запускаю свой сценарий сброса, чтобы убедиться, что я начинаю новый:
docker rm $(docker ps -a -q)
docker rmi $(docker images -q) --force
docker volume rm $(docker volume ls -q)
Запуск docker inspect <container>
возвращает это для тома, не уверен, что это нормально, что тип "привязывается" как к привязке, а не к vo Луме.
"Mounts": [
{
"Type": "bind",
"Source": "/e/DEV/sandbox/docker",
"Destination": "/usr/share/nginx/html",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],
test.local
. Попробуйте указать ему имя, которое заканчивается на.conf