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

无法将MySQL与docker-compose中的spring boot连接起来

齐建安
2023-03-14

我在使用Docker使用mysql运行spring boot时遇到了问题。在没有Docker的情况下,它在本地运行良好。我的dockerfile

FROM maven:3.3-jdk-8-alpine

ENV MAVEN_HOME /usr/lib/mvn
ENV PATH $MAVEN_HOME/bin:$PATH
ENV SPRING_DATASOURCE_URL jdbc:mysql://my-db:3306/registration_springboot?createDatabaseIfNotExist=true

ENV SPRING_DATASOURCE_USERNAME vnphu
ENV SPRING_DATASOURCE_PASSWORD password

docker-compose.yml文件

version: '3'
services:
  my-db:
     image: mysql/mysql-server:5.7
     container_name: my-db
     environment:
         MYSQL_USER: vnphu
         MYSQL_DATABASE: registration_springboot
         MYSQL_PASSWORD: password
         MYSQL_ROOT_PASSWORD: password
     ports:
          - '3306-3306'

  web:
    build: .
    working_dir: /app
    volumes:
        - .:/app
        - ~/.m2:/root/.m2
    ports:
        - "8080:8080"
    command: mvn clean spring-boot:run
    depends_on:
        - my-db

运行时错误:docker-compose up-build

Caused by: java.net.ConnectException: Connection refused (Connection refused)
web_1    |      at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_121]
web_1    |      at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_121]
web_1    |      at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_121]
web_1    |      at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_121]
web_1    |      at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_121]
web_1    |      at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_121]
web_1    |      at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155) ~[mysql-connector-java-8.0.19.jar:8.0.19]
web_1    |      at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:65) ~[mysql-connector-java-8.0.19.jar:8.0.19]
web_1    |      ... 115 common frames omitted

共有1个答案

吴胜涝
2023-03-14

Web应用程序正在尝试连接到尚未可用的my-db(数据库仍在加载)您可以根据您的偏好使用以下任何解决方案。

>

  • 重新启动失败

    将docker-compose文件修改为

    web:
     ports: 
       "8080:8080"
     restart:on-failure
    

    睡眠

    在环境下修改docker-compose文件

    web:
     ports:
       "8080:8080"
     environment:
       -SLEEP_LENGTH=5
    

    wait-for-it.sh文件

    等待文件

    这种方法需要您修改Dockerfile和docker-compose文件

  •  类似资料:
    • 我创建了一个docker compose文件,将MySql连接到SpringBoot应用程序。但我得到了这个错误: 我尝试在本地机器中使用docker默认ip运行Spring Boot应用程序,同时在这个docker-compose.yml文件中只运行MySql容器,结果运行得非常好。但当我尝试docker编写文件时。我知道这个错误。

    • 我有一个连接到mysql数据库的Spring Boot应用程序。如果我以经典的方式在本地运行它,它工作得很好。但当我尝试dockerise时,它-数据库成功启动,但应用程序却看不到数据库。 我的DockerFile: 我执行的内容: 首先,我构建我的service_img 然后执行docker-compose up。在日志中,我看到数据库启动日志,然后是应用程序启动日志,然后是错误: 有什么建议吗

    • 问题内容: 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 Docker-machine正常运行,并且能够通过docker-machine ssh连接。 但是无法从docker-compose连接。 无法通过http + unix://var/run/docker.sock连接到Docker守护程序-它正在运行吗? 如果它

    • 问题内容: 我收到一条错误消息,提示我无法连接到Docker守护程序。我调查了其他人遇到类似问题的答案,但没有帮助。我正在运行Ubuntu 15.10版本。我将尝试提供我所有的信息。 Docker版本 Docker-Compose版本 如果我尝试停止或启动服务,就会发生这种情况。 如果我跑步 任何帮助将不胜感激。让我知道您是否需要更多信息。 问题答案: 我发现了这个问题,似乎可以解决我的问题。 G

    • 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 docker-machine运行正常,并且能够通过docker-machine SSH进行连接。 但无法从Docker-Compose连接。 无法连接到HTTP+UNIX上的Docker后台进程://var/run/Docker.sock-它正在运行吗? 如果它位于非标准位置

    • 问题内容: 我有MySQL的Laravel应用程序,我正在尝试使用docker-compose在Docker中运行它。但是,当应用尝试连接数据库时,它会抛出: Connector.php 55行中的PDOException:SQLSTATE [HY000] [2002]无法通过套接字’/var/run/mysqld/mysqld.sock’连接到本地MySQL服务器(2) 我的docker-com