gpt4 book ai didi

java - 如何在不创建任何 mysql 服务器的情况下为本地主机/现有数据库运行 docker 容器?

转载 作者:行者123 更新时间:2023-11-29 10:35:58 26 4
gpt4 key购买 nike

我对docker很陌生,我有一个简单的 java 应用程序的 jar 文件,它连接到 localhost:3306 上的数据库,我不想创建任何新的 docker mysql 服务器,我希望我的应用程序与现有数据库连接。我想从 docker 运行这个 jar。我的 Dockerfile 是

 FROM java:8  
COPY . /var/www/java
WORKDIR /var/www/java
CMD ["java", "-jar","exp.jar"]

但显示错误

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure Last packet sent to the server was 0 ms
ago. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method) at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at
com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at
com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718) at
com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at
com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302) at
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:664) at
java.sql.DriverManager.getConnection(DriverManager.java:247) at
com.linkeztech.code.App.main(App.java:37) Caused by:
java.net.ConnectException: Connection refused (Connection refused)

我要为此做什么?我被困住了请帮助我。谢谢。

最佳答案

Linux 主机

使用网络模式主机启动容器。 docker run --network 主机... 。这将使容器与主机共享网络堆栈。因此,从容器到 localhost:3306 的连接将连接到数据库。

MAC 版 Docker

从应用程序容器内部连接到 docker.for.mac.localhost:3306 而不是 localhost:3306docker.for.mac.localhost 是一个特殊的 DNS 名称,它将解析为主机的 IP。

Windows 版 Docker

在 Windows 计算机上运行 ipconfig 并找到以太网适配器 vEthernet (DockerNAT) 网络接口(interface)的 IP 地址。使用该 IP 连接到数据库。

关于java - 如何在不创建任何 mysql 服务器的情况下为本地主机/现有数据库运行 docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46426178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com