Пример 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