首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在docker-compose.yml中提供什么配置来允许spring boot docker容器连接到远程数据库?

问我应该在docker-compose.yml中提供什么配置来允许spring boot docker容器连接到远程数据库?
EN

Stack Overflow用户
提问于 2021-01-26 05:31:34
回答 1查看 174关注 0票数 0

我尝试用下面的docker组合文件启动两个容器:

代码语言:javascript
复制
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 boot服务器尝试连接到位于另一个主机和网络上的远程数据库服务器。Docker启动client-app容器成功,但启动spring-boot-server失败。此日志显示服务器崩溃,因为它无法连接到远程数据库:

代码语言:javascript
复制
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.

两个容器的Dockerfile都会创建有效的镜像,我可以通过这些镜像手动运行容器。它看起来像是有一些默认的网络限制,由组成文件启动的容器。

运行在Ubuntu上的Docker compose版本:

代码语言:javascript
复制
docker-compose version 1.8.0, build unknown

=

进一步的调查:

我创建了一个Dockerfile

代码语言:javascript
复制
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

代码语言:javascript
复制
version: '2'
services:
  test-remote-db-compose:
    build: .
    ports:
      - 8000:8000

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

EN

回答 1

Stack Overflow用户

发布于 2021-01-27 03:54:15

在执行this、主机mashine重启和docker-compose up --build之后,这个问题已经得到了很好的解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65892737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档