【问题标题】:how to access mysql docker container in spring boot docker container如何在spring boot docker容器中访问mysql docker容器
【发布时间】:2019-06-10 15:26:50
【问题描述】:

我有 2 个 docker 文件

1. mysql-dockerfile

 FROM mysql:5.5

 EXPOSE 3306

 ENV MYSQL_ROOT_PASSWORD root

 ENV MYSQL_DATABASE ToDoList

用于构建dockerfiles的命令如下

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

用于构建dockerfiles的命令如下

 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。

【问题讨论】:

标签: java mysql spring-boot docker dockerfile


【解决方案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

要从主机连接,您需要公开端口。

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 2021-04-04
    • 2019-10-05
    • 2017-11-10
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    相关资源
    最近更新 更多