我有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-img2.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-imgspring 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 ToDoListcommand 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-img2. 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-imgspring 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-imgDont 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容器
发布评论