docker-compose volume_from с версией 3
Я пытаюсь создать конфигурацию Nginx/PHP FPM с помощью docker compose, и у меня возникают проблемы с синтаксисом / изменениями томов версии 3.
мой Dockerfile
:
FROM php:7-fpm
VOLUME /var/www/html
мой docker-compose.yml
:
version: "3"
services:
php:
build: .
volumes:
- ./html:/var/www/html
web:
image: nginx
links:
- php
ports:
- "8888:80"
volumes:
- php:/var/www/html
- ./default.conf:/etc/nginx/conf.d/default.conf
volumes:
php:
Когда я добавляю index.php
подать в ./html
Я могу увидеть это, перейдя по http://localhost:8888/, но любые статические файлы (например, CSS) возвращают 404, потому что Nginx не может найти их в своем контейнере (/var/www/html
пуст в контейнере nginx). С докером версии 3 составлять файлы не надо volumes_from
больше, это то, что я пытаюсь повторить.
Как я могу заставить это работать с версией 3?
1 ответ
Для использования "Именованных томов" для обмена файлами между контейнерами необходимо определить
1) volumes:
раздел на верхнем уровне файла yml и определить имя тома
volumes:
php:
2) определить volume
раздел о первом контейнере, как вы сделали (где будет монтироваться share)
web:
volumes:
- php:/var/www/html #<container_name>:<mount_point>
3) определить volume
раздел на втором контейнере (Share будет монтироваться с)
php:
volumes:
- php:/var/www/html
4) (опционально) Если вам нужно сохранить данные тома на хост-машине, вы можете использовать подключаемый модуль local- persist. Вы можете указать драйвер тома докера и путь, по которому будут храниться ваши данные.
volumes:
php:
driver: local-persist
driver_opts:
mountpoint: /path/on/host/machine/
В вашем случае вы забыли определить имя тома для php
контейнер. Просто замени
php:
build: .
volumes:
- ./html:/var/www/html
в
php:
build: .
volumes:
- php:/var/www/html
и использовать Local Persist Docker Plugin