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

无法从其他容器连接到docker中的Mysql服务器

公孙宸
2023-03-14
version: '3'
services:
  api:
    build: ./springboot-api-docker
    ports:
    - "9090:9090"
    depends_on:
      - database
  database:
    container_name: 'localhost'
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_PASSWORD: password
      MYSQL_USER: user
      MYSQL_DATABASE: animaldb
    ports:
      - "3307:3306"
    restart: always
server.port = 9090

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3307/animaldb?autoReconnect=true&useSSL=false
spring.datasource.username=user
spring.datasource.password=password

和DocerFile

FROM openjdk:8u201-jdk-alpine3.9
ADD target/springboot-api-docker-0.0.1-SNAPSHOT.jar .
EXPOSE 9090
CMD java -jar springboot-api-docker-0.0.1-SNAPSHOT.jar

很好笑因为...首先,我想把容器的名称“localhost”更改为另一个。但当我改变的时候,我不能运行Spring Bot应用程序,即使从IntelliJ。我在docker中创建了MySql的映像,并尝试在IntelliJ中进行连接。这是warking但当我想使用SpringBoot应用程序在caontainer然后是问题。我还没找到解决办法。我会非常感谢每一个帮助。

我在这方面的错误。

和控制台中的所有文本。也许你会更快找到。

原因:org.hibernate.service.spi.ServiceException:无法在org.hibernate.service.internal.abstractServiceRegistryImpl.CreateService(abstractServiceRegistryImpl.java:275)~[hibernate-core-5.4.9.final.jar!/:5.4.9.final]创建请求的服务[org.hibernate.engine.jdbc.env.spi.jdbcEnvironment]api_1

共有1个答案

屠杰
2023-03-14

使用localhost作为docker容器名是不好的。

将localhost更改为database like it。

localhost始终是您的本地计算机或本地docker,而不是外部资源。

Docker-Compose

version: '3'
services:
  api:
    build: ./springboot-api-docker
    ports:
    - "9090:9090"
    depends_on:
      - database
    links:
      - database
  database:
    container_name: 'database'
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_PASSWORD: password
      MYSQL_USER: user
      MYSQL_DATABASE: animaldb
    ports:
      - "3307:3306"
    restart: always

应用程序.属性:

server.port = 9090

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://database: 3306/animaldb?autoReconnect=true&useSSL=false
spring.datasource.username=user
spring.datasource.password=password
 类似资料:
  • 错误:Redis连接到Redis:6379失败-连接econnrejected 172.20.0.2:6379 码头集装箱 Redis工作: docker-compose.yml

  • 我的docker版本是1.13.1。我正试图从我的docker容器连接到redis-server,但我遇到了拒绝连接的错误。详细的日志如下: 原因:redis.clients.jedis.exceptions.jedisconnectionException:java.net.Connection:redis.clients.jedis.Connection(Connection.java:207

  • 我已经使用docker工具箱在视窗机器上安装了docker。我也在我的视窗机器上安装了mysql,服务器运行在端口3306上(localhost-127.0.0.1-在docker机器之外)。我在一个名为“micra-workq-svc”的docker网络内部的docker容器中运行一个冲刺启动应用程序,我希望在docker内部运行的应用程序连接到本地主机。我花了几个小时在谷歌上搜索,没有一个链接

  • 我已经创建了一个MySQL数据库的映像,并在容器中运行它。我希望它在端口3406/3407上运行,因此我调用docker run命令如下所示: 如果我看我的容器,它看起来是这样的: 我非常想连接到我的数据库现在,但我似乎不能使我的URL工作。 这是我的URL的样子:

  • 问题内容: 我有用于创建mysql映像的docker- compose文件,并将端口公开给3306,但是当我尝试安装CMS时,出现了无法连接数据库的错误。我尝试扫描端口3306,并向我显示它已打开,因此mysql正在运行。 为什么两个Docker容器彼此看不到? 这是我的docker-compose文件: 问题答案: 要连接到数据库,请使用您作为主机名提供的链接/别名。因此,您的CMS可以使用主机