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

编程入门 行业动态 更新时间:2024-10-21 05:55:13
本文介绍了如何在Spring Boot Docker容器中访问MySQL Docker容器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有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容器

本文发布于:2023-10-07 15:12:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1469730.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:容器   如何在   Spring   Boot   Docker

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!