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

Я изучаю, как использовать Docker, и я нахожусь в процессе настройки простого приложения с Frontend и Backend, используя 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

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

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

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

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

1 ответ

Если вы используете Docker 1.9 или 1.10 и используете формат 2.0 для docker-compose.ymlВы можете напрямую получить доступ к другим службам либо по имени их "службы", либо по имени "контейнера". Посмотрите мой ответ на этот вопрос, у которого есть основной пример, чтобы проиллюстрировать это; /questions/15810299/kak-podklyuchit-kontejner-veb-prilozheniya-docker-k-kontejneru-docker-postgresql/15810311#15810311

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

Другие вопросы по тегам