我在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
的警告。
答案 0 :(得分:1)
看起来您的数据库根本不起作用。您可以通过在第二个终端中运行docker ps
或docker exec -it mysql-db mysql -u root -proot db
来验证这一点。它可能会失败。原因是你使用-e MYSQL_USER=root
标志。此docker镜像为root用户创建了您提供的密码,因此当您想再次创建root用户时,它会失败并关闭容器。只需将其更改为-e MYSQL_USER=myuser
即可。