如何在Spring Boot Docker容器中访问MySQL Docker容器

时间:2019-01-16 14:05:47

标签: java mysql spring-boot docker dockerfile

我有2个docker文件

1。 mysql-dockerfile

 FROM mysql:5.5

 EXPOSE 3306

 ENV MYSQL_ROOT_PASSWORD root

 ENV MYSQL_DATABASE ToDoList

用于构建dockerfile的命令如下

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"]

用于构建dockerfile的命令如下

 sudo docker build -t java-img  -f java-dockerfile .
 docker run --name javacontainer -d -p 4040:9090 java-img

spring boot应用程序包含jdbc url,如下所示

spring.datasource.url = jdbc:mysql:// localhost:3030 / ToDoList

我无法启动项目,因为docker中的spring boot应用程序无法连接另一个容器中的mysql db。

我发现的一个解决方案是将两个docker容器引入一个docker网络或链接docker容器。 任何人都可以提出好的解决方案,修改的docker run命令和修改的jdbc url。

1 个答案:

答案 0 :(得分:1)

将它们放入一个网络并使用容器名称作为主机名:

docker network create foo
docker run --network=foo --name mysqlcontainer -d mysql-img
docker run --network=foo --name javacontainer -d java-img

不公开端口-网络内部容器之间自动公开端口。

要在内部连接,请使用mysqlcontainer:3306javacontainer:9090

要从主机连接,则需要端口暴露。