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

Другие вопросы по тегам