Я устанавливаю некоторые веб-приложения в отдельные контейнеры Docker и один дополнительный контейнер с nginx, который действует как обратный прокси-сервер. Мне не нужно, чтобы отдельные веб-приложения запускались одновременно, и я не против (я на самом деле предпочитаю) иметь несколько контейнеров nginx, каждый из которых обслуживает одно приложение.
Я собираю это вместе с docker-compose
, используя следующую конфигурацию:
app_a_dcompose.yml
version: "3.7"
services:
app_a:
build:
context: .
dockerfile: app_aa.Dockerfile
volumes:
- type: bind
source: ./volumes/share
target: /data/share
nginx:
#container_name: nginx_app_a
build:
context: .
args:
vhost_conf: app_a_vhost.conf
dockerfile: ./nginx.Dockerfile
ports:
- "8002:8002"
volumes:
- type: bind
source: ./volumes/log
target: /data/log
app_b_dcompose.yml
version: "3.7"
services:
app_b:
build:
context: .
dockerfile: app_aa.Dockerfile
volumes:
- type: bind
source: ./volumes/share
target: /data/share
nginx:
#container_name: nginx_app_b
build:
context: .
args:
vhost_conf: app_b_vhost.conf
dockerfile: ./nginx.Dockerfile
ports:
- "8001:8001"
volumes:
- type: bind
source: ./volumes/log
target: /data/log
nginx.Dockerfile
FROM nginx:stable-alpine
ARG vhost_conf
WORKDIR /etc/nginx/conf.d
COPY $vhost_conf ./
Для этого нужно скопировать конфигурацию vhost для каждого приложения для каждого приложения в контейнер nginx. Я бы предположил, что два отдельных контейнера были отключены, если бы я начал создавать файлы. Однако, пока первый контейнер запускается нормально, второй заставляет nginx выйти из первого. Добавление определенного имени контейнера (закомментированного в примерах файлов компоновки) не помогло.
Что я делаю не так? Любая помощь приветствуется.