Удалить все последние опции networks:
и container_name:
из файла docker-compose.yml
. network_mode: host
, поскольку у вас есть контейнер auth
, несовместим с сетевым взаимодействием Docker и, как правило, представляется в качестве обходного пути для проблем публикации портов; удалите это тоже. Возможно, вы захотите, чтобы имя ui:
также было в нижнем регистре.
Когда вы сделаете это, Docker Compose создаст одну сеть с именем default
и присоединит к ней все создаваемые контейнеры. сеть. Все они будут доступны по их служебным именам. Networking in Compose в документации Docker описывает это более подробно.
Ваш контейнер fusionauth
имеет правильную базовую настройку c. Обрезка некоторых опций:
fusionauth:
image: fusionauth/fusionauth-app:latest
depends_on:
- postgres_db
- es_search
environment:
# vvv These host names are other Compose service names
# vvv and default Compose networking makes them reachable
DATABASE_URL: jdbc:postgresql://postgres_db:5432/fusionauth
DATABASE_ET: CETERA
FUSIONAUTH_SEARCH_SERVERS: http://es_search:9200
FUSIONAUTH_URL: http://fusionauth:9010
restart: unless-stopped
ports:
- ${FUSIONAUTH_PORT}:9011
volumes:
- fa_config:/usr/local/fusionauth/config
# no networks: or container_name:
Если контейнер ui
представляет что-то вроде React или Angular front-end, помните, что приложение запускается в браузере, а не в Docker, и поэтому придется обратиться к DNS-имени или IP-адресу физической системы и опубликовать ports:
. Обычно в эту настройку вводится nginx обратный прокси-сервер, который обслуживает как код пользовательского интерфейса, так и интерфейс REST, с которым он должен взаимодействовать.
В принципе, вы можете настроить его с несколькими сетями для более ограниченного обмена другие ответы сделали. Это может помешать ui
связаться с postgres_db
. Я был бы немного удивлен, увидев среду, где требуется такой уровень контроля, а также где Compose является подходящим решением для развертывания.
Также ненужным и часто встречающимся в других вопросах, подобных этому, являются hostname:
(задает только собственные понятия контейнеров для собственных имен хостов), links:
(только для предварительной сети Docker) и expose:
(аналогично).