Docker Compose :基础知识和用法

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  

在上面的代码片段中,我们定义了两个服务: webdb ​​。 该 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 是一个用于轻松高效的应用程序开发、测试和部署的有用工具。 它最大限度地减少了开发和生产环境之间的差异,确保了软件开发过程的一致性,并提高了开发团队的生产力。