Мое веб-приложение имеет строку подключения, подобную следующей
jdbc:mysql://127.0.0.1:3306/my-template?useSSL=false
При работе вне Docker все работает как положено.
Когда я запускаю/загружаю приложение из Docker, оно не подключается к MySQL.
Я понимаю, что Docker — это виртуальная машина с закрытым контейнером, но как мне позволить ей найти мой экземпляр MySQL?
Я пробовал некоторые вещи, о которых читал, например добавление записи extra_hosts, но это тоже не сработало. jdbc:mysql://fc.database/my-template?useSSL=false
Люди должны делать это постоянно, верно?
version: '3'
services:
tomcat:
image: 'local/myapp:r1'
build:
context: '.'
volumes:
- './logs:/usr/local/tomcat/logs'
ports:
- '8080:8080'
network_mode: "host"
extra_hosts:
- "fc.database:127.0.0.1:3306"
volumes: {}




замените 127.0.0.1 на host.docker.internal и попробуйте еще раз.
На самом деле 127.0.0.1 указывал на меня, так что докер-контейнер будет указывать на докер-контейнер, а не на ОС хоста. но AFAIK host.docker.internal укажет на ОС хоста.
Также позаботьтесь о брандмауэре хоста. Поэтому проверьте брандмауэр вашей ОС, чтобы разрешить входящий трафик на нужный порт (3306).
@Doug удалите дополнительный хост и попробуйте jdbc:mysql://host.docker.internal:3306/my-template?useSSL=false
extra_hosts: - "fc.database:host.docker.internal:3306 и моя строка подключения jdbc следующим образом: jdbc.url=jdbc:mysql://fc.database/fc-template?useSSL=false и порт открыт в брандмауэре, но все равно не повезло