当前位置: 首页 > 知识库问答 >
问题:

无法从Micronaut docker容器访问Mysql数据库

巫坚白
2023-03-14

我试图在mi本地环境中创建docker容器。我们有一个Micronaut(Java)应用程序和一个MySQL数据库。

我用以下内容为数据库创建了一个容器:

docker run -p 3307:3306 --name mysql-example -e MYSQL_ROOT_PASSWORD=password -d mysql

当我从我的应用程序中连接到docker之外的Embbbed服务器时,我们可以毫无问题地连接。Mi应用程序。yml有下一个配置:

datasources:
  default:
    url: jdbc:mysql://localhost:3307/example?allowPublicKeyRetrieval=true&generateSimpleParameterMetadata=true&zeroDateTimeBehavior=convertToNull&verifyServerCertificate=false&useSSL=false
    driverClassName: com.mysql.cj.jdbc.Driver
    username: root
    password: password
    schema-generate: CREATE_DROP
    dialect: MYSQL

然后我尝试创建Micronaut应用程序映像,并在容器上运行它。我的Dockerfile包含:

FROM maven:3.6.1-jdk-8
COPY target/example-0.1.jar example.jar
EXPOSE 8080
CMD java -Dcom.sun.management.jmxremote -Xmx128m -jar example.jar

我首先生成JAR:

mvnw package

然后生成docker映像:

docker build -t example .

当我测试部署在容器中的应用程序时,我有下一个异常:

Caused by: java.net.ConnectException: Connection refused (Connection refused)

你能帮我解决这个问题吗?谢谢:-)

共有1个答案

云正信
2023-03-14

既然您使用--name MySQL example运行MySQL容器,那么您应该将其连接为

jdbc:mysql://mysql-example:3307

jdbc:mysql://localhost:3307
 类似资料:
  • 问题内容: 我已经安装了带有mysql的docker容器,该容器公开了3306。我已经指定了数据库用户,数据库密码并创建了一个测试数据库,并将特权授予了新用户。 在另一个容器中,我想访问此数据库。 因此,我用一个简单的PHP脚本设置了新容器,该脚本在此db中创建了新表。 我知道mysql容器的ip是172.17.0.2这样: 比起使用mysqli,我创建了新表,并且一切正常。 但是我认为使用他的I

  • 我可以对Docker API进行cUrl调用,但是如果我从容器(docker-comals)运行相同的脚本,我就无法到达任何API终结点。 我的请求如下: 原因可能是使用了localhost,但我现在还找不到解决方案。有什么建议吗? 编辑:下面是我正在使用的堆栈(Api平台)的简要摘要https://api-platform.com/).每个容器都连接到“api_默认”网桥网络: 基于php=Sy

  • 问题内容: 如果我在某个主机上运行mysql数据库,并且该主机也正在运行docker容器:我如何从主机上运行的docker容器中访问mysql数据库? 例如,是否有一种方法可以将主机端口发布到容器(与docker run -p的作用相反)? 问题答案: 关于如何以一致的,易于理解的和可移植的方式执行此操作的问题已有很长时间的讨论。尚无完整的解决方案,但我会将您链接到下面的讨论。 无论如何,您都想尝

  • 我有一个关于这个问题的问题https://hub.docker.com/r/jupyter/scipy-notebook.我正在尝试使用docker compose运行此图像: 组成: Dockerfile 我用手够不着它http://locahost:8888 .... 网址。我使用Windows10作为主机,并尝试从这个docker compose和这些工作中访问其他服务。

  • 问题内容: 我已经创建了hashicorp保管库部署并配置了kubernetes auth。保管库容器从Pod内部调用kubernetes api进行k8s身份验证,并且该调用失败,并显示500个错误代码(连接被拒绝)。我正在将docker用于Windows kubernetes。 我将以下配置添加到Vault中以进行kubernetes身份验证机制。 payload.json 我得到了预期的20