我在docker里面有一个springboot java应用程序需要访问外部mysql。
我该如何配置它? 是否可以在 Dockerfile 中定义它?
我现在正在使用 docker,所以我认为这应该是一个简单而常见的任务:)
当我运行应用程序时收到错误
2019-02-12 15:10:51,472 DEBUG [main] com.zaxxer.hikari.pool.HikariPool:HikariPool-1 - 无法从数据源获取连接 java.sql.SQLNonTransientConnectionException:无法与数据库服务器建立连接。尝试重新连接 3 次。放弃。
我的 Dockerfile
FROM openjdk:11.0.2-jre-slim
VOLUME /tmp
COPY target/app-0.4-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
EXPOSE 9001/tcp
答案1
如果 mysql 服务器正在 docker 主机上运行,无论是在金属上还是在具有映射端口的另一个容器中,则可能是您的应用程序的配置仍在寻找 localhost 上的数据库服务器,该服务器在其容器内指向容器内的环回接口。
您可以使用特殊地址来解决这个问题:host.docker.internal
查看信息