Компоновщик при 'docker-compose' с привязкой монтирования

Я пытаюсь создать проект docker-compose для приложения php рядом с базой данных, которая автоматически развертывается на машине разработчика. Это не проблема, но где он застрял, так это composer-install.

Я хочу, чтобы на главном компьютере был каталог, привязанный к контейнеру, чтобы разработчик мог изменить код и сразу увидеть его в экземпляре докера. Это означает

  1. Разверните контейнер с PHP и веб-сервером
  2. Развернуть базу данных
  3. Привяжите локальный исходный каталог к ​​контейнеру PHP
  4. Выполните composer-install в этом каталоге

Дерево каталогов похоже на

/
-php
-- src
-- Dockerfile
-postgres
-- Dockerfile
docker-compose.yml

Я прикрепил фрагменты из моих docker-compose.yml и PHP Dockerfile, кто-нибудь знает, почему он не работает, или видит проблему в порядке или в чем-то еще, или даже могу я объяснить, что я должен заметить? Это было бы прекрасно!

Dockerfile:

FROM xy

RUN curl -sS https://getcomposer.org/installer | php \
        && mv composer.phar /usr/local/bin/ \
        && ln -s /usr/local/bin/composer.phar /usr/local/bin/composer

COPY ./src /var/www/html
WORKDIR /var/www/html/

RUN composer install --prefer-source --no-interaction

Файл Docker-compose:

version: '3.4'
services:
    php:
        build: ./php
        container_name: "php"
        volumes:
             - ./php/src:/var/www/html

    postgres:
        image: postgres:10.4-alpine
        container_name: "postgres"

Любое сообщение об ошибке было бы полезно

Jakub Bujny 10.09.2018 11:11

Проблема может заключаться в том, что команда composer install выполняется и завершается правильно, но после этого с контейнером нечего делать? Раньше у меня были проблемы с контейнером postgres, потому что он запускался медленнее, чем мой php-контейнер. Используйте depends_on в конфигурации php-контейнера, чтобы запустить их в правильном порядке, возможно

ferdynator 10.09.2018 11:32

Когда я понял статью [1], я прочитал правильно, я могу делать все, что захочу, в процессе сборки в каталоге e. грамм. '/ var / www / html'. Когда я монтирую том в этот каталог (даже если монтирование происходит до composer-install), все, что было на предыдущем уровне, исчезает, и это имеет своего рода приоритет. [1] phase2technology.com/blog/bending-your-containers-bind-mount‌ s

Marjan 10.09.2018 12:05
0
3
513
0

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