3.7 Docker最新入门教程-Docker入门-多容器应用

本文介绍如何在Docker中构建多容器应用,包括容器网络、启动和连接MySQL,以及在容器中运行应用程序。讲解了如何通过容器网络实现不同容器间的通信,并提供了在开发环境中设置MySQL连接的步骤和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.7 多容器应用

到目前为止,我们一直在使用单容器应用程序。但是,我们现在想要将 MySQL 添加到应用程序堆栈中。经常会出现以下问题——“MySQL 将运行在哪里?安装在同一个容器中还是单独运行?” 一般来说,**每个容器都应该做一件事,并且把它做好。**几个原因:

  • 您很有可能必须以不同于数据库的方式扩展 API 和前端
  • 单独的容器让您可以隔离版本和更新版本
  • 虽然您可以在本地为数据库使用容器,但您可能希望在生产环境中为数据库使用托管服务。那时您不想将数据库引擎与您的应用程序一起发布。
  • 运行多个进程将需要一个进程管理器(容器只启动一个进程),这增加了容器启动/关闭的复杂性

还有更多的原因。所以,我们将更新我们的应用程序,让它像这样工作:

在这里插入图片描述

容器网络

请记住,默认情况下,容器是独立运行的,对同一台机器上的其他进程或容器一无所知。那么,我们如何让一个容器与另一个容器通信呢?答案是 联网。现在,您不必成为网络工程师(万岁!)。只要记住这个规则…

笔记

如果两个容器在同一个网络上,它们可以相互通信。如果不在的话,将无法通信。

启动 MySQL

有两种方法可以将容器放在网络上:

  1. 在开始时分配它

  2. 连接现有容器。现在,我们将首先创建网络并在启动时附加 MySQL 容器。

  1. 创建网络。

     $ docker network create todo-app
    
  2. 启动一个 MySQL 容器并将其连接到网络。我们还将定义一些环境变量,数据库将使用这些变量来初始化数据库(请参阅MySQL Docker Hub 列表中的“环境变量”部分)。

     $ docker run -d \
         --network todo-app --network-alias mysql \
         -v todo-mysql-data:/var/lib/mysql \
         -e MYSQL_ROOT_PASSWORD=secret \
         -e MYSQL_DATABASE=todos \
         mysql:5.7.25
    

    如果您使用的是基于 ARM 的芯片,例如 Macbook M1 芯片/Apple Silicon,请使用此命令。

     $ docker run -d \
         --network todo-app --network-alias mysql \
         --platform "linux/amd64" \
         -v todo-mysql-data:/var/lib/mysql \
         -e MYSQL_ROOT_PASSWORD=secret \
         -e MYSQL_DATABASE=todos \
         mysql:5.7.25
    

    如果您使用的是 Windows,则在 PowerShell 中使用此命令。

     PS> docker run -d `
         --network todo-app --network-alias mysql `
         -v todo-mysql-data:/var/lib/mysql `
         -e MYSQL_ROOT_PASSWORD=secret `
         -e MYSQL_DATABASE=to
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eyes-star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值