首页 > 解决方案 > 春季启动中的docker mysql UnknownHostException

问题描述

我正在使用带有docker的spring boot。当我运行docker-compose.yaml文件时,它在 mysql 中显示以下错误:

Caused by: java.net.UnknownHostException: mysql
  at java.base/java.net.InetAddress$CachedAddresses.get(Unknown Source) ~[na:na]
  at java.base/java.net.InetAddress.getAllByName0(Unknown Source) ~[na:na]
  at java.base/java.net.InetAddress.getAllByName(Unknown Source) ~[na:na]
  at java.base/java.net.InetAddress.getAllByName(Unknown Source) ~[na:na]
  at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:132) ~[mysql-connector-java-8.0.25.jar:8.0.25]
 at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63) ~[mysql-connector-java-8.0.25.jar:8.0.25]

我有如下用户:

  1. docker-compose.yaml文件中,我使用了下面的代码..

    services:
      mysql:
        image: mysql:latest
        hostname: mysql
        restart: always
        ports:
          - 3306:3306
        environment:
          MYSQL_DATABASE: accountdb
          MYSQL_USER: root
          MYSQL_PASSWORD: 123
          MYSQL_ROOT_PASSWORD: 123
        volumes:
          - db_data:/var/lib/mysql
          - ./src/main/resources/db/init.sql:/data/application/init.sql
        command: --init-file /data/application/init.sql
    
       my-service:
         image: myimage
         mem_limit: 700m
         ports:
           - "8081:8081"   
        depends_on:    
         - mysql
    
  2. 在 Spring 启动一个applicaiton.ym l 文件:

    spring:
      application:
        name: account-opening
      datasource:
        url: jdbc:mysql://mysql:3306/accountdb?useSSL=false&serverTimezone=UTC
        username: root
        password: 123
    
    
    
      jpa:
        hibernate:
          ddl-auto: create
        show-sql: true
        generate-ddl: true
      h2:
        console:
          enabled: true
    

我的代码有什么问题?请帮我

标签: springspring-bootdocker

解决方案


每次使用卷时,都必须在 docker-compose.yml 文件中声明卷部分。另外,请仔细检查您的数据库初始化脚本是否可以像这样在 docker-compose 中使用。


推荐阅读