在生产环境中使用Compose

当你在开发中使用Compose定义你的应用程序时,你可以使用这个定义在不同的环境中运行你的应用程序,例如CI、预发布和生产环境。

部署应用程序的最简单方法是在单个服务器上运行它,类似于您如何运行您的开发环境。如果您想要扩展您的应用程序,您可以在Swarm集群上运行Compose应用程序。

修改你的Compose文件以用于生产环境

您可能需要对您的应用程序配置进行更改,以使其准备好用于生产环境。这些更改可能包括:

  • 移除应用程序代码的任何卷绑定,以便代码保留在容器内部,并且无法从外部更改
  • 绑定到主机上的不同端口
  • 设置不同的环境变量,例如减少日志记录的详细程度,或为外部服务(如电子邮件服务器)指定设置
  • 指定一个重启策略,如 restart: always以避免停机时间
  • 添加额外的服务,例如日志聚合器

出于这个原因,考虑定义一个额外的Compose文件,例如 production.yml,它指定了适合生产的配置。这个配置文件只需要包含你想从原始Compose文件中进行的更改。然后,额外的Compose文件会应用于原始的compose.yml,以创建一个新的配置。

一旦你有了第二个配置文件,你可以使用-f选项来使用它:

$ docker compose -f compose.yml -f production.yml up -d

请参阅 使用多个compose文件 以获取更完整的示例和其他选项。

部署更改

当你对应用代码进行更改时,记得重新构建你的镜像并重新创建应用的容器。要重新部署一个名为web的服务,请使用:

$ docker compose build web
$ docker compose up --no-deps -d web

第一个命令重建了web的镜像,然后停止、销毁并重新创建仅web服务。--no-deps标志阻止Compose同时重新创建web依赖的任何服务。

在单台服务器上运行Compose

你可以使用Compose通过适当设置DOCKER_HOSTDOCKER_TLS_VERIFYDOCKER_CERT_PATH环境变量来将应用程序部署到远程Docker主机。更多信息,请参阅预定义环境变量

一旦你设置了环境变量,所有正常的docker compose命令都可以无需进一步配置即可使用。