04-17.eri-test Docker-组成由MySql支持的Spring Boot应用

In last week’s post I showed how you can find the IP address of a running MySql Docker container and configure the Spring Data JPA connection for it. 我提到实际上有更好的方法,所以我想介绍一种更好的方法: 码头工人组成.

Docker Compose Logo

What is docker-compose?

Compose是用于定义和运行多容器Docker应用程序的工具.
~ from the docker-compose site

本质上,撰写是完成这项工作的正确工具。 我们的目标是在Docker容器中运行一个Spring Boot应用程序,在Docker容器中运行一个MySql实例,以及它们之间的连接。 Docker-compose将允许我们声明性地定义此设置,并将为我们自动化。 让我们开始吧。

Installing docker-compose

首先,您当然需要安装docker-compose. It’s pretty easy and you’ll find the instructions in the installation section of the documentation. 去检查一下,然后回到这里. 如果您可以运行“ docker-compose –version”,则可以继续.

Writing a docker-compose file

好的,接下来您需要的是“撰写文件”。 这是一个名为“ docker-compose.yml”的YAML文件,已将其放置在应用程序的根目录中。 它由一系列条目组成,这些条目定义了您的构图中的每个Docker容器。 我们需要一个Spring Boot应用程序docker容器和一个MySql docker容器。 因此,我们将有两个条目。

当然,这假设您已经为Spring Boot应用程序编写了Dockerfile。 在线上有很多资源可以做到这一点。

If you followed along with last week’s post, you also have a MySql Docker container already, that your Spring Boot app can connect to. 因此,请立即离开此页面,并确保所有内容都准备就绪. 基本上,您应该能够运行诸如“ docker start myapp-mysql”之类的东西来启动MySql容器,以及诸如“ docker run -p 8080”之类的东西。:8080 –name myapp-main -t {container id}'以使用Spring Boot应用程序运行容器.

现在只需在docker-compose.yml中声明两件事:

版本:“ 3”

 服务:

   myapp-mysql:
     图片:mysql:8.0
     环境:
       -MYSQL_ROOT_PASSWORD =根
       -MYSQL_DATABASE = MyAppDb
       -MYSQL_USER = myapp用户
       -MYSQL_PASSWORD =密码
     端口:
       -3306:3306

   myapp-main:
     映像:运行docker映像时出现的myapp映像名称
     重新启动:失败
     取决于:
       -myapp-mysql
     端口:
       -8080:8080
     环境:
       -DATABASE_HOST = myapp-mysql
       -DATABASE_USER = myapp用户
       -DATABASE_PASSWORD =密码
       -DATABASE_NAME = MyAppDb
       -DATABASE_PORT = 3306

docker-compose.yml

Networking the containers together

如今,docker-compose的默认行为的一部分是为容器自动运行创建一个网络,并为每个容器提供与其容器名称相同的主机名。

默认情况下,Compose为您的应用设置单个网络. 服务的每个容器都加入默认网络,并且都可以被该网络上的其他容器访问,并且可以在与容器名称相同的主机名下被发现.
https://docs.docker.com/compose/networking/

这意味着您可以转到Spring Boot应用程序中的application.properties文件,并将连接从IP地址更改为(使用此示例)“ myapp-mysql”,并更改任何其他配置值以匹配docker- compose.yml。

spring.datasource.url=jdbc:mysql://myapp-mysql:3306/MyAppDb?useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=myapp-user
spring.datasource.password=password

application.properties

别忘了,进行此更改后,您需要为Spring Boot应用程序重建Docker容器(可能使用“ mvn软件包dockerfile:build”)。

Bring the composition up

现在,您只需运行“ docker-compose up”,docker-compose将完成两个容器的工作,并为它们提供docker-compose.yml中包含的配置。 这很容易!

然后,您应该能够通过其发布的端口以正常方式与您的应用程序进行交互。 当然,您还可以在运行时使用所有常用的Docker命令:“ docker container ls”,“ docker inspect”等。

当您准备再次将其关闭时,只需运行“ docker-compose down”。

恭喜你! 您现在拥有docker-compose技能! 🙌


最初发布于代码.scottshipp.com

from: https://dev.to//scottshipp/docker-compose-a-spring-boot-app-backed-by-mysql-89m

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值