我应该在docker-compose中提供什么配置.Yml允许一个春季启动docker容器连接到远程数据库?



我尝试用以下docker组合文件启动2个容器:

version: '2'
services:
client-app:
image: client-app:latest
build: ./client-app/Dockerfile
volumes:
- ./client-app:/usr/src/app
ports:
- 3000:8000
spring-boot-server:
build: ./spring-boot-server/Dockerfile
volumes:
- ./spring-boot-server:/usr/src/app
ports:
- 7000:7000

spring引导服务器试图连接到另一个主机和网络上的远程数据库服务器。Docker启动client-app容器成功,启动spring-boot-server容器失败。此日志显示服务器崩溃,因为它无法连接到远程数据库:

2021-01-25 21:02:28.393  INFO 1 --- [main] com.zaxxer.hikari.HikariDataSource: HikariPool-1 - Starting...
2021-01-25 21:02:29.553 ERROR 1 --- [main] com.zaxxer.hikari.pool.HikariPool: HikariPool-1 - Exception during pool initialization.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

两个容器的Dockerfiles创建有效的映像,我可以手动运行容器。看起来在由组合文件启动的容器上有一些默认的网络限制。

Docker撰写版本在Ubuntu上运行:

docker-compose version 1.8.0, build unknown

=============================================

进一步调查:

我创建了一个Dockerfile

FROM ubuntu
RUN apt-get update
RUN apt-get install -y mysql-client
CMD mysql -A -P 3306 -h 8.8.8.8 --user=root --password=mypassword -e "SELECT VERSION()" mydatabase

和一个docker-compose.yml

version: '2'
services:
test-remote-db-compose:
build: .
ports:
- 8000:8000

单独测试与远程数据库的连通性。测试成功通过。

这个问题已经神秘地解决了,在这样做之后,主机重启和docker-compose up --build

最新更新