无法在Docker中使用Spring连接到MySQL

时间:2017-12-14 09:51:00

标签: mysql docker spring-boot

我在docker容器中运行了mysql:

docker run -it --name mysql-db -e MYSQL_ROOT_PASSWORD=root \
    -e MYSQL_DATABASE=db -e MYSQL_USER=root -e MYSQL_PASSWORD=root mysql:latest
docker start mysql-db

我想在另一个docker容器中运行我的Spring Boot应用程序(使用Maven):

docker build -t java-app .
docker run -it --name java-app --link mysql-db:mysql -p 8080:8080 java-app
docker start java-app

但我得到一个例外:

  

引起:java.net.ConnectException:连接被拒绝(连接   拒绝)

我的Dockerfile:

FROM java:8
ADD target/demo-0.0.1-SNAPSHOT.jar /usr/share/demo/demo.jar 
ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/demo/demo.jar"]  

我的application.yml:

spring:
    # General JPA properties
    jpa:
        show-sql: false
        database-platform: org.hibernate.dialect.MySQL57Dialect
        # Hibernate Specific properties
        hibernate:
            ddl-auto: create
        properties:
            hibernate:
                format_sql: false
    # DataSource configuration
    datasource:
        url: jdbc:mysql://mysql:3306/db
        username: root
        password: root

我的问题是什么?

MySQL日志有关于-skip-name-resolve mode的警告。

1 个答案:

答案 0 :(得分:1)

看起来您的数据库根本不起作用。您可以通过在第二个终端中运行docker psdocker exec -it mysql-db mysql -u root -proot db来验证这一点。它可能会失败。原因是你使用-e MYSQL_USER=root标志。此docker镜像为root用户创建了您提供的密码,因此当您想再次创建root用户时,它会失败并关闭容器。只需将其更改为-e MYSQL_USER=myuser即可。