Пример Docker для внешнего и внутреннего приложений

Я изучаю, как использовать Docker, и я нахожусь в процессе настройки простого приложения с интерфейсом и серверной частью, используя Centos+PHP+MySQL.

У меня есть моя машина: "пример"

В «примере» машины я настроил 2 док-контейнера:

frontend:
  build: ./frontend
  volumes:
    - ./frontend:/var/www/html
    - ./infrastructure/logs/frontend/httpd:/var/logs/httpd
  ports:
    - "80"
  links:
    - api
api:
  build: ./api
  volumes:
    - ./api:/var/www/html
    - ./infrastructure/logs/api/httpd:/var/logs/httpd
  ports:
    - "80"
  links:
    - mysql:container_mysql

Проблема, с которой я сталкиваюсь, заключается в том, что при доступе к контейнеру докеров мне нужно указать номер порта либо для FRONTEND (32771), либо для BACKEND (32772).

Это нормально или есть способ создать имена хостов для API и внешнего интерфейса приложения?

Как это работает при развертывании в AWS?

Заранее спасибо.


person Gaurav Malhotra    schedule 28.03.2016    source источник


Ответы (1)


Если вы используете докер 1.9 или 1.10 и используете формат 2.0 для своего docker-compose.yml, вы можете напрямую обращаться к другим службам через их имя «службы» или имя «контейнера». См. мой ответ на этот вопрос, в котором есть базовый пример, иллюстрирующий это; https://stackoverflow.com/a/36245209/1811501

Поскольку соединение между службами проходит через частную сеть контейнер-контейнер, вам не нужно использовать случайно назначенные порты, поэтому, если служба публикует/открывает порт 80, вы можете просто подключиться через порт 80.

person thaJeztah    schedule 28.03.2016