Вы бы настроили это точно так же, как если бы Docker не участвовал: настройте экземпляр Tomcat с DNS-именем или IP-адресом другого сервера. Вам необходимо убедиться, что служба опубликована вне пространства Docker, используя директиву ports:
.
На server-a.example.com
вы можете запустить этот docker-compose.yml
файл:
version: '3'
services:
api:
image: myApi
ports:
- "8810:8810"
env:
DATABASE_URL: "http://server-b.example.com:8012"
А на server-b.example.com
:
version: '3'
services:
db:
image: mydb
ports:
- "8012:8012"
В принципе, можно установить оверлейную сеть , соединяющую два хоста, но это значительно более сложная настройка.
(Вы определенно не хотите использовать docker exec
для изменения /etc/hosts
в контейнере: вам придется повторять этот шаг каждый раз, когда вы удаляете и воссоздаете контейнер, а ручное обслуживание файлов хостов утомительно и приводит к ошибке -Prone, особенно если вы перемещаете контейнеры между хостами. Консул может работать как система обнаружения служб, которая предоставляет службу DNS.)