如何在Spring Boot Docker容器中访问MySQL Docker容器 [英] how to access mysql docker container in spring boot docker container
问题描述
我有2个docker文件
1.mysql-dockerfile
来自mysql:5.5展览3306ENV MYSQL_ROOT_PASSWORD根ENV MYSQL_DATABASE待办事项清单
用于构建dockerfile的命令如下
sudo docker build -t mysql-img -f mysql-dockerfile.sudo docker运行-d --name mysqlcontainer -p 3030:3306 mysql-img
2.java-dockerfile
FROM openjdk:8-jre-alpine9090号展览WORKDIR/usr/srcCOPY target/*.war todoApp.warCMD ["java",-jar","todoApp.war"]
用于构建dockerfile的命令如下
sudo docker build -t java-img -f java-dockerfile.docker运行--name javacontainer -d -p 4040:9090 java-img
spring boot应用程序包含jdbc网址,如下所示
spring.datasource.url = jdbc:mysql://localhost:3030/ToDoList
我无法启动项目,因为docker中的spring boot应用程序无法连接另一个容器中的mysql db.
我发现的一个解决方案是将两个docker容器带入一个docker网络或链接docker容器.任何人都可以提出好的解决方案,修改的docker run命令和修改的jdbc url.将它们放入一个网络并使用容器名称作为主机名:
docker network create foodocker运行--network = foo --name mysqlcontainer -d mysql-imgdocker run --network = foo --name javacontainer -d java-img
不公开端口-它们在网络内部容器之间自动公开.
要进行内部连接,请使用 mysqlcontainer:3306
和 javacontainer:9090
.
要从主机连接,您需要端口暴露.
i have 2 docker file
1. mysql-dockerfile
FROM mysql:5.5
EXPOSE 3306
ENV MYSQL_ROOT_PASSWORD root
ENV MYSQL_DATABASE ToDoList
command used to build dockerfiles are as below
sudo docker build -t mysql-img -f mysql-dockerfile .
sudo docker run -d --name mysqlcontainer -p 3030:3306 mysql-img
2. java-dockerfile
FROM openjdk:8-jre-alpine
EXPOSE 9090
WORKDIR /usr/src
COPY target/*.war todoApp.war
CMD ["java","-jar","todoApp.war"]
command used to build dockerfiles are as below
sudo docker build -t java-img -f java-dockerfile .
docker run --name javacontainer -d -p 4040:9090 java-img
spring boot application consist jdbc url as follow
spring.datasource.url=jdbc:mysql://localhost:3030/ToDoList
i am not able to start project because spring boot application in docker is not able to connect mysql db which is in another container.
one solution i found is to bring two docker container in one docker network or link docker container. can anyone please suggest good solution, modified docker run command and modified jdbc url.
Put them into one network and use container names as hostnames:
docker network create foo
docker run --network=foo --name mysqlcontainer -d mysql-img
docker run --network=foo --name javacontainer -d java-img
Dont expose ports - they are exposed automatically between containers inside network.
To connect inside, use mysqlcontainer:3306
and javacontainer:9090
.
To connect from host, you will need port exposing.
这篇关于如何在Spring Boot Docker容器中访问MySQL Docker容器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!