Маршрутизация нескольких сетей с использованием docker compose и nginx - PullRequest
0 голосов
/ 28 мая 2020

Я ищу среду, в которой я мог бы разместить несколько веб-сайтов на одном AWS узле EC2. Итак, у меня есть приложение, в котором у меня есть несколько компонентов, каждый как docker, которые являются частью docker compose. Каждый из docker предоставляет порт, скажем, componenta предоставляет 9443.

Итак, я хочу развернуть несколько копий моего приложения на одном узле EC2 и направить к ним с помощью nginx. Таким образом, может быть несколько копий компонентов stack1_componenta, stack1_componentb, stack2_componenta, stack2_component2. Итак, порт 9443, предоставляемый stack1_componenta, должен быть внутренним только для stack1 и не должен быть доступен для stack2.

Есть ли способ, которым я могу определить сеть для каждого docker, составить и направить nginx на что сеть на основе домена?

1 Ответ

0 голосов
/ 09 июня 2020

спасибо, ребята, за комментарии и решения. Я смог добиться этого с помощью EXPOSE, network_type = bridge и nginx. Итак, с EXPOSE вместо PORTS у меня будут эти порты, доступные только в среде создания, и я открыл порты за пределами композиции, используя nginx. Пример файла для справки:

version: '3'
services:
  component1:
    build: ./component1
    image: <repo-url>/component1:${VER}
    expose:
      - <portnumber>
    volumes:
      - "<host-path>:<docker-path>"
    network_mode: bridge
    command: bash -c "while true; do sleep 1; done"

  nginx:
    build: ./nginx
    image: <repo-url>/nginx:${VER}
    depends_on:
      - "component1"
    links:
      - "component1:component1"
    ports:
      - 1443:443
    volumes:
      - ${BASEFOLDERPATH}/nginx/log/:/var/log/nginx/
    restart: on-failure
    network_mode: bridge
    command: bash -c "nginx; while true; do sleep 1; done"
...