【发布时间】:2019-08-04 13:19:22
【问题描述】:
我提取了 mysql docker 镜像并使用命令运行容器:
docker run --name myapp-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=mydb -p 3306:3306 -d mysql:latest
此时本地的springBoot正在工作。与mysql连接:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
现在我希望 springBoot 应用程序也位于同一台服务器上的单独 docker 容器上。为此,我正在使用 Dockerfile:
FROM openjdk:8-jdk-alpine
ADD target/myapp.jar myapp.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "myapp.jar"]
我从这张图片开始:
docker run --name myapp -p 8080:8080 -it myapp:latest
现在 springBoot 容器找不到 myslq 容器。 我试试:
docker run --name myapp -p 8080:8080 --link=myapp-mysql:mysql -it myapp:latest
但它再次无法连接到 mysql 容器。如何将springBoot容器连接到mysql容器?
我还尝试将 application.properties 更改为:
spring.datasource.url=jdbc:mysql://myapp-mysql:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
并启动springBoot:
docker run --name myapp -p 8080:8080 --link=myapp-mysql:mysql -it myapp:latest
再次无法连接到数据库:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
【问题讨论】:
标签: mysql spring spring-boot docker containers