Docker Compose 是一个强大且流行的工具,用于管理和部署基于 Docker. Docker 它允许您将多个容器作为单个项目来 定义、配置和运行,从而简化应用程序部署并确保开发和生产环境之间的一致性。
以下是一些概念和示例 Docker Compose:
使用 docker-compose.yml 文件定义项目
在该 docker-compose.yml
文件中,您可以定义应用程序所需的服务。 例如,要部署带有 MySQL 数据库的 PHP Web 应用程序,您可以定义两个服务,如下所示:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "80:80"
volumes:
- ./app:/var/www/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: my_database
在上面的代码片段中,我们定义了两个服务: web
和 db
。 该 web
服务将使用 PHP 7.4 image 和 Apache,监听端口 80,并将 ./app
目录从主机挂载 /var/www/html
到 container. 该 db
服务将使用MySQL 5.7 image 并设置数据库所需的一些环境变量。
使用 Docker Compose 命令
在文件中定义项目后 docker-compose.yml
,您可以使用 Docker Compose 命令来管理服务。
-
启动项目:
docker-compose up
此命令将启动文件中定义的服务的容器
docker-compose.yml
。 -
停止并移除容器:
docker-compose down
此命令停止并删除与该项目相关的所有容器。
-
列出正在运行的容器:
docker-compose ps
该命令将显示项目中容器的状态。
-
查看服务日志:
docker-compose logs
此命令显示项目中服务的日志。
环境变量和自定义
Docker Compose 允许您使用环境变量来自定义不同环境(例如开发和生产)的配置。 您可以在文件中使用环境变量 docker-compose.yml
并在相应的 .env
文件中定义它们的值。
例如,如果要为服务的端口定义环境变量 web
,可以在文件中添加一行, .env
如下所示:
WEB_PORT=8080
然后,在 docker-compose.yml
文件中,您可以像这样使用此环境变量:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "${WEB_PORT}:80"
volumes:
- ./app:/var/www/html
运行该 docker-compose up
命令时,该 web
服务将侦听端口 8080 而不是端口 80。
Docker 与Swam 集成
如果您想将应用程序部署在具有多个节点的分布式环境上, Docker Compose 可以与 Docker Swarm. 这允许您跨集群中的多个节点管理服务 Docker。
要使用此集成,您只需在环境中运行 或 命令 时添加 --orchestrate
或选项 。 --with-registry-auth
docker stack deploy
docker-compose up
Swarm
Docker Compose 是一个用于轻松高效的应用程序开发、测试和部署的有用工具。 它最大限度地减少了开发和生产环境之间的差异,确保了软件开发过程的一致性,并提高了开发团队的生产力。