Intereting Posts
Разрешение Heroku: AH00072: make_sock: не удалось привязать к адресу : 80 Докер: невозможно получить доступ к контейнеру mysql удаленно Исправлена ​​проблема с подключением к докере, но не знаю, почему исправлено Создание файла докеров с apt-get за прокси-сервером Возможны ли параллельные контексты Докера? Запуск docker как не-root в среде разработки для определенного процесса Отсутствие пространства имен в той же версии фреймворка Как избежать запуска интерфейса docker0? Как начать рабство Дженкинса на докер-облаке? Запуск приложения ASP.NET Core в Docker, выполняемого как пользовательский пользователь Базы данных MySQL исчезают, когда контейнер докера закрывается Связывание нескольких контейнеров докеров в одном контейнере с псевдонимом localhost с использованием docker-compose Ошибка записи в параметр cgu.rt_runtime_us «Docker-compose up» не вытягивает изображения каждый раз, он воссоздает вытащенное изображение Докер для Mac Host Networking

Докеры готовят php-fpm и конфигурацию nginx

У меня небольшая теоретическая проблема с комбинацией php-fpm, nginx и кода приложения в Docker.

Я пытаюсь придерживаться модели, когда изображение докеров имеет только одно: у меня есть отдельные контейнеры для php-fpm и nginx.

php: image: php:5-fpm-alpine expose: - 9000:9000 volumes: - ./:/var/www/app nginx: image: nginx:alpine ports: - 3000:80 links: - php volumes: - ./nginx/app.conf:/etc/nginx/conf.d/app.conf - ./:/var/www/app 

ПРИМЕЧАНИЕ. В app.conf используется root /var/www/app; Пример схемы из Symfony

Это здорово в разработке, но я не знаю, как преобразовать его в готовое к производству. Установить каталог приложений в производстве – это действительно плохая практика (если я не ошибаюсь). В лучшем случае я копирую исходный код приложения в контейнер и использую этот предварительно созданный код ( COPY . /var/www/app Dockerfile COPY . /var/www/app в Dockerfile ), но в этом случае невозможно, или я не знаю, как это сделать.

Мне нужно распространять исходный код приложения между двумя контаминерами (контейнером nginx и контейнером php-fpm), потому что он нужен.

Конечно, я могу создать собственный контейнер nginx и php-fpm и добавить COPY . /var/www/app COPY . /var/www/app в обоих из них, но я не прав, потому что я дублирую код и весь процесс сборки (устанавливать зависимости, строить исходный код и т. д.) должен быть в обоих (nginx / php-fpm ).

Я пытаюсь выполнить поиск, но я не знаю, как решить эту проблему. Многие статьи показывают, как это сделать с помощью файла docker-compose и кода монтирования с –volume, но я не нашел никакого примера, как использовать это при производстве (без тома).

Только одно приемлемое решение для меня (в это время) заключается в создании одного контейнера с nginx и php-fpm вместе, но я не уверен, когда это хороший способ ( я пытаюсь найти наилучшую практику ).

Есть ли у вас опыт в этом или какая-либо идея, как его решить?

Спасибо за любой ответ!

В это время я использую smth:

Dockerfile:

 FROM php:fpm COPY . /var/www/app/ WORKDIR /var/www/app/ RUN composer install EXPOSE 9000 VOLUME /var/www/app/web 

Dockerfile.nginx

 FROM nginx COPY default /etc/nginx/default 

докер-compose.yml

 app: build: context: . web: build: context: . dockerfile: Dockerfile.nginx volumes_from: app - app: build: context: . web: build: context: . dockerfile: Dockerfile.nginx volumes_from: app 

Но через несколько дней после выпуска 17.05 мы можем сделать в одном Dockerfile smth вроде:

 FROM php:cli AS builder COPY . /var/www/app/ WORKDIR /var/www/app/ RUN composer install && bin/console assets:dump FROM php:fpm AS app COPY --from=builder /var/www/app/src /var/www/app/vendor /var/www/app/ COPY --from=builder /var/www/app/web/app.php /var/www/app/vendo /var/www/app/web/ FROM nginx AS web COPY default /etc/nginx/default COPY --from=builder /var/www/app/web /var/www/app/web