Я начинаю с Docker и думаю, что упускаю кое-что совершенно очевидное. У меня есть действительно простой многоэтапный Dockerfile, который выглядит так:
FROM php:7.4-fpm-alpine as test_php
WORKDIR /app
COPY . .
CMD ["php-fpm"]
FROM nginx:1.19-alpine as test_nginx
COPY docker/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
WORKDIR /app
COPY --from=test_php /app/public public/
И docker -compose, который выглядит так:
services:
php:
build:
context: .
target: test_php
volumes:
- ./:/app
nginx:
build:
context: .
target: test_nginx
depends_on:
- php
volumes:
- ./docker/nginx/conf.d:/etc/nginx/conf.d
- ./public:/app/public
ports:
- "80:80"
Это работает в разработке (у меня в папке publi c просто индекс. php с помощью phpinfo ()). В моем default.conf для nginx есть это:
fastcgi_pass php:9000;
, чтобы создать ссылку на службу php.
Проблема в производстве. Я создаю свой образ на основе Dockerfile, а затем отправляю sh его в Docker Hub. Чтобы использовать свой образ в продакшене, я хотел сделать что-то вроде этого в новом docker -compose.prod.yml:
services:
app:
image:mynickname/myimage
Итак, теперь я использую свой образ, созданный в файле докеров, но я этого не делаю. У меня больше нет службы php, поэтому nginx conf больше не работает. Я думал оставить свой исходный docker -compose (с услугой php), но в этом случае я не использую свое изображение ... Я явно что-то пропустил, поэтому мой вопрос:
Что это "лучший" способ go от разработчика к продукту с такой базовой конфигурацией c? (php и nginx). Как я могу использовать свое изображение в производстве, если php работает нормально? Есть ли другие способы?
Большое спасибо за вашу помощь