当前位置: 首页 > news >正文

Docker Compose 多容器编排实战

前言

一、Docker Compose 简介

1️⃣ Docker Compose 工作原理

二、安装 Docker Compose

1️⃣ 安装 Docker Compose

三、编写 docker-compose.yml 文件

3.1 配置文件结构

3.2 编写 LNMP 环境配置

四、启动和管理多容器应用

4.1 启动所有服务

4.2 查看容器状态

4.3 查看服务日志

4.4 停止和删除服务

4.5 重启服务

五、Docker Compose 实战:LNMP 环境部署

5.1 创建项目目录

5.2 创建 Nginx 配置文件

5.3 创建 HTML 文件

5.4 启动服务

5.5 测试部署

六、Docker Compose 配置优化

6.1 使用 .env 文件配置环境变量

6.2 使用 build 构建自定义镜像

七、Docker Compose 微服务部署案例

7.1 项目结构:

八、Docker Compose 扩展:多容器自动化部署

8.1 多容器的自动化扩展

九、总结

前言

在前几章中,我们学习了 Dockerfile 和单容器的管理。 然而,在实际应用中,我们往往需要同时管理多个容器,Docker Compose 就是解决这一问题的强大工具。

Docker Compose 通过定义一个 docker-compose.yml 文件来管理多容器应用,让我们能够以 声明式配置 启动、停止和管理整个应用栈。 本篇将详细讲解如何使用 Docker Compose 构建 LNMP 环境(Linux + Nginx + MySQL + PHP),以及如何用它进行 微服务架构的快速部署


一、Docker Compose 简介

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。 通过 Compose,我们可以:

  • 使用一个配置文件定义多个服务(容器)

  • 通过一个命令启动所有服务

  • 方便地管理容器间的依赖和网络配置

1️⃣ Docker Compose 工作原理

  • docker-compose.yml:配置文件,定义服务、网络、卷等。

  • docker-compose 命令:用于启动、停止、重启、删除服务。


二、安装 Docker Compose

在大多数 Docker 环境中,Docker Compose 默认已安装。如果没有安装,可以手动安装:

1️⃣ 安装 Docker Compose

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

验证安装:

docker-compose --version

三、编写 docker-compose.yml 文件

3.1 配置文件结构

Docker Compose 的配置文件通常由三个主要部分组成:

部分描述
services定义容器服务,所有运行的容器都要在此部分列出
volumes定义持久化数据卷
networks定义服务间通信网络

3.2 编写 LNMP 环境配置

以下是一个典型的 LNMP 环境配置:

version: '3'
services:nginx:image: nginx:latestcontainer_name: nginxports:- "8080:80"volumes:- ./html:/usr/share/nginx/html- ./nginx.conf:/etc/nginx/nginx.confnetworks:- lnmp_network
​mysql:image: mysql:5.7container_name: mysqlenvironment:MYSQL_ROOT_PASSWORD: examplevolumes:- mysql_data:/var/lib/mysqlnetworks:- lnmp_network
​php:image: php:7.4-fpmcontainer_name: phpvolumes:- ./html:/var/www/htmlnetworks:- lnmp_network
​
networks:lnmp_network:driver: bridge
​
volumes:mysql_data:

四、启动和管理多容器应用

4.1 启动所有服务

在包含 docker-compose.yml 文件的目录中执行以下命令启动容器:

docker-compose up -d

参数说明:

  • -d:后台运行容器

4.2 查看容器状态

docker-compose ps

4.3 查看服务日志

docker-compose logs

查看特定服务日志:

docker-compose logs nginx

4.4 停止和删除服务

停止服务:

docker-compose down

如果希望删除卷(清理数据):

docker-compose down -v

4.5 重启服务

docker-compose restart

五、Docker Compose 实战:LNMP 环境部署

5.1 创建项目目录

mkdir -p /opt/lnmp && cd /opt/lnmp

在该目录下创建 docker-compose.ymlnginx.conf 文件。

5.2 创建 Nginx 配置文件

nginx.conf 文件内容:

server {listen 80;server_name localhost;
​root /usr/share/nginx/html;index index.php index.html index.htm;
​location / {try_files $uri $uri/ =404;}
​location ~ \.php$ {fastcgi_pass php:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;include fastcgi_params;}
}

5.3 创建 HTML 文件

./html 目录中创建一个简单的 index.php 文件:

<?php
phpinfo();
?>

5.4 启动服务

docker-compose up -d

5.5 测试部署

访问 http://localhost:8080,你应该可以看到 PHP 信息页面,表示 LNMP 环境成功搭建


六、Docker Compose 配置优化

6.1 使用 .env 文件配置环境变量

docker-compose.yml 文件中使用环境变量来配置服务:

version: '3'
services:nginx:image: nginx:latestcontainer_name: nginxports:- "${NGINX_PORT}:80"volumes:- ./html:/usr/share/nginx/html- ./nginx.conf:/etc/nginx/nginx.confnetworks:- lnmp_network

然后创建一个 .env 文件,定义环境变量:

NGINX_PORT=8080

💡 使用 .env 文件可以方便地配置不同环境下的服务变量。


6.2 使用 build 构建自定义镜像

如果你需要自定义镜像,可以在 docker-compose.yml 中使用 build

services:nginx:build:context: ./nginxdockerfile: Dockerfilecontainer_name: nginxports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmlnetworks:- lnmp_network

✅ 这将从 ./nginx/Dockerfile 构建一个镜像,替代默认的 nginx:latest


七、Docker Compose 微服务部署案例

以下是一个典型的 微服务架构,包含 Nginx、Node.js、MongoDB

version: '3'
services:nginx:image: nginx:latestcontainer_name: nginxports:- "8080:80"volumes:- ./nginx.conf:/etc/nginx/nginx.confnetworks:- app_network
​nodeapp:image: node:14container_name: nodeappbuild:context: ./nodeappports:- "3000:3000"networks:- app_networkdepends_on:- mongodb
​mongodb:image: mongo:latestcontainer_name: mongodbvolumes:- mongodb_data:/data/dbnetworks:- app_network
​
networks:app_network:driver: bridge
​
volumes:mongodb_data:

7.1 项目结构:

myapp/
├── docker-compose.yml
├── nodeapp/
│   ├── Dockerfile
│   ├── app.js
│   └── package.json
└── nginx.conf

八、Docker Compose 扩展:多容器自动化部署

8.1 多容器的自动化扩展

使用 scale 命令扩展服务实例:

docker-compose up -d --scale nodeapp=3

这将扩展 nodeapp 服务为 3 个实例。


九、总结

通过本篇学习,你应掌握以下技能:

✅ 使用 Docker Compose 管理多容器应用

✅ 配置并启动 LNMP 环境

✅ 构建微服务架构的多容器应用

✅ 使用 .env 文件与构建自定义镜像

✅ 实践 Docker Compose 扩展与自动化部署

http://www.dtcms.com/a/443256.html

相关文章:

  • 初创公司 建网站网站设计和营销
  • 救援启动!
  • Android 事件分发机制 图解
  • 做网站价钱电脑版qq在线登录网页入口
  • 140、【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(六)
  • 免费网站建设软件大全wordpress禁止中国ip
  • 有界区域上具有常数右端项的泊松方程解的上界估计
  • 做区位分析的地图网站wordpress主题分类目录主题
  • 网站建设实习每天内容手机网站开发 html
  • 手机网站制作案例教育网站建设备案
  • 网站开发时的闭包写法进一步加强区门户网站建设管理办法
  • 计算机网站设计怎么做扬中信息网
  • 专业网站名词解释资讯网站 怎样 增强用户粘度
  • 现代C++——并发编程
  • Dotnet通过OpenAI方式接入DeepSeek
  • 第八课(零基础友好版)|第一次训练模型(Teachable Machine,超详细)
  • 定制制作网站公司建筑模型网站有哪些
  • 【多线程】无锁数据结构(Lock-Free Data Structures)是什么?
  • YOLO入门教程(番外):卷积神经网络—卷积神经网络(LeNet)
  • 哪里可以做寄生虫网站wordpress链接默认是什么样子
  • 网站开发常用插件怎样保存网站资料 做证据
  • 网站经常被挂码泉州seo排名扣费
  • 做网站需要做需求分析吗修改wordpress登录背景图片
  • 网站建设人员分布知名的摄影网站有哪些
  • MySQL 运维知识点(十四)---- 主从复制
  • Linux常用通配符大全含运行示例
  • 相城seo网站优化软件django企业级问答网站开发
  • (autode计算化学—atoms)AtomCollection原子集类
  • 主键索引和唯一性索引的区别与联系
  • 免备案域名是危险网站荣耀手机商城官方网