Я проверил много записей на форуме (например, тоже в stackoverflow), но все еще не могу понять, в чем проблема с моим файлом docker-compose.
Поэтому, когда я запускаю свое приложение (content-app
), я получил следующее исключение:
Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=content-database)(port=3306)(type=master) : Connection refused (Connection refused)
Мое приложение представляет собой загрузочное приложение Spring, которое пытается подключиться к базе данных, URL JDBC:
url: jdbc:mariadb://content-database:3306/contentdb?autoReconnect=true
Приложение Spring Boot работает нормально, так как локально (если не используется докер) может подключаться к локальной папке mariadb.
Таким образом, контейнер content-app
не видит контейнер content-database
. Я прочитал, что если я укажу сеть и назначу контейнеры сети, они смогут соединяться друг с другом.
Когда я подключаюсь к работающему контейнеру content-app
, я могу подключиться к content-database
root@894628d7bdd9:/# telnet content-database 3306
Trying 172.28.0.3...
Connected to content-database.
Escape character is '^]'.
n
5.5.5-10.4.3-MariaDB-1:10.4.3+maria~bionip/4X@wW/�#_9<b[~)N.:ymysql_native_passwordConnection closed by foreign host.
Мой файл yaml для docker-compose:
version: '3.3'
networks:
net_content:
services:
content-database:
image: content-database:latest
build:
context: .
dockerfile: ./database/Dockerfile
networks:
- net_content
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
content-redis:
image: content-redis:latest
build:
context: .
dockerfile: ./redis/Dockerfile
networks:
- net_content
content-app:
image: content-app:latest
build:
context: .
dockerfile: ./content/Dockerfile
networks:
- net_content
depends_on:
- "content-database"
Любая подсказка, пожалуйста?
Спасибо!