У меня есть Docker Compose setup для запуска Nginx обслуживания изображений (файлы jpg
). Порт, протокол и т. Д. c. не актуально. My Nginx работает правильно и обслуживает эти файлы:
web:
image: myweb
restart: always
volumes:
- ./logs/nginx:/var/log/nginx
ports:
...
Образ myweb
наследуется от nginx
и добавляет всю конфигурацию, необходимую для этого сервера, в основном, сеть root: 1007 *
index index.html index.php;
root /var/www/myweb/public;
Я также использую местоположения php:7.0-fpm
и fastcgi
, но здесь это не проблема.
Я бы хотел смонтировать том хоста с помощью картинки (вместо того, чтобы копировать их в docker изображение ), чтобы иметь возможность обновлять его извне (Dropbox syn c или что-то еще).
web:
image: myweb
restart: always
volumes:
- ./webcode:/var/www
- ./logs/nginx:/var/log/nginx
- ./images-data/catalog-images:/var/www/myweb/public/catalog/images
ports:
...
Путь к хосту webcode
(относительно docker -compose.yml location) - это сеть c, также установленная на /var/www
. Путь к хосту images-data/catalog-images
(относительно docker -compose.yml location) является каталогом картинок, смонтированным на /var/www/myweb/public/catalog/images
.
Я не уверен, что это хорошая практика (смонтировать каталог хоста по тому же пути, где уже был смонтирован другой каталог хоста). Во всяком случае, я также пытался сохранить webcode
как часть образа myweb
, имеющего только один смонтированный том (фотографии один).
Монтирование webcode
и включая изображения на нем, работает. И без какой-либо громкости, просто включая все вещи (веб-сайт и фотографии), также работает. Но мне понадобится отдельный том для фотографий. Я также попытался использовать символические ссылки в контейнере /var/www/myweb/public/catalog/images
в направлении объема изображений. Но Nginx не отображает его, возможно, потому, что он отличается от /var/www
.
Должен ли он принадлежать к root
из nginx
конфигурации сервера?
является то, что эти изображения не загружаются в браузере. Войдя в контейнер, я подтверждаю, что владение томом является правильным (www-data:www-data
).
С точки зрения контейнера владение и содержимое одинаковы, если я подключаю том или если я скопировать в файловую систему контейнера. Но Nginx может видеть только файлы в файловой системе контейнера Docker.
Это нормальное поведение? Мне не хватает конфигурации Nginx для нормальной работы с томами хоста внутри контейнера?