使用 Docker Compose 构建复杂的多容器 App的方法
目录
- 1 为什么需要 Docker Compose
- 2 什么是 Docker Compose
- 3 Docker Compose 的使用
- 3.1 启动容器
- 3.2 停止并删除容器
1 为什么需要 Docker Compose
在构建容器过程中,一般需要重复运行一些命令, 如 docker build ,docker run 等等,这些命令有时冗长而复杂,逐个重复运行这些命令十分繁琐,对于多容器的复杂应用尤其如此。使用 Docker Compose 工具能极大地简化容器的创建、管理和维护。
2 什么是 Docker Compose
Docker Compose 工具相当于 C/C++ 的 make 工具,使用 make 需要 Makefile,所有的编译链接设置都在Makefile 中指定,不需要为了运行程序而每次都在终端手动输入长串的指令。
Docker Compose 同样也需要一个配置文件: docker-compose.yaml(文件扩展名也可以是 yml).
YAML 是一种人类可读的数据序列化语言,通常用于配置文件和存储或传输数据的应用程序,YAML 使用 python 那样的缩进以指示嵌套关系。缩进通常使用两个空格,但是实际上没有限制,同 python,使用 # 表示注释。
3 Docker Compose 的使用
如下是一个 Mern Stack App 项目结构:

docker-compose.yaml 文件内容如下:
# docker compose 规范的版本,下面的网站可查
# https://docs.docker.com/compose/compose-file/compose-versioning/
version: "3.8"
# 此 mern 将创建3个容器,下面的3个服务
# mongodb, backend, frontend 将自动被翻译成3个容器
services:
mongodb:
# 从 hub.docker.com 获取官方image
image: "mongo"
# 命名卷: 持久化保存数据库数据
volumes:
- data:/data/db
# 环境变量,在文件 ./env/mongo.env 里保存
env_file:
- ./env/mongo.env
backend:
build: ./backend
ports:
- "80:80"
volumes:
# 命名卷
- logs:/app/logs
# 绑定挂载,不同于命令,此文件中可以使用相对路径,
# 手动运行命令则需绝对路径
- ./backend:/app
# 匿名卷
- /app/node_modules
env_file:
- ./env/backend.env
depends_on:
- mongodb
frontend:
build: ./frontend
ports:
- "3000:3000"
volumes:
- ./frontend/src:/app/src
# stdin_open 和 tty 对应手动执行命令时的 -it
stdin_open: true
tty: true
# 仅仅在容器 backend 运行后,才会运行此 frontend
depends_on:
- backend
-
# 这里是整个 App 的命名卷
# 匿名卷和 bind-mounts 不能在这里指定
volumes:
data:
logs:
3.1 启动容器
docker-compose up
docker-compose up 默认以附加模式运行,如果需要以分离模式运行则在命令后加 -d:
docker-compose up -d
也因为此原因,docker-compose.yaml 里没有设置 -d 的选项。
3.2 停止并删除容器
docker-compose down
- 使用 Docker Compose,
Dockerfile文件仍然必不可少。 Docker Compose创建一个默认网络并将所有容器添加到该网络,故docker-compose.yaml里不需要指定网络。 - docker-compose down 将停止并删除容器,因此 docker-compose.yaml 没有选项
--rm
不管是单容器还是多容器,使用 Docker Compose 能极大简化容器的创建、管理和维护,由此可见,Docker Compose 是一个强大的非常有用的工具。
栏 目:其它服务器
下一篇:Windows Server2012 R2 无法安装.NET Framework 3.5的解决方法
本文标题:使用 Docker Compose 构建复杂的多容器 App的方法
本文地址:https://zz.feitang.co/server/32483.html
您可能感兴趣的文章
- 12-20Kubernetes中使用临时容器进行故障排查的方法
- 12-20Nginx设置HTTPS的方法步骤
- 12-20二进制方式安装 Kubernetes1.18.3版本实现脚本
- 12-20Nginx工作模式及代理配置的使用细节
- 12-20ZooKeeper分布式协调服务设计核心概念及安装配置
- 12-20Kubernetes部署可视化地图的十个步骤
- 12-20关于docker清理Overlay2占用磁盘空间的问题(亲测有效)
- 12-20Docker compose配置文件写法及命令使用示例
- 12-20openwrt安装docker并启动的操作方法
- 12-20云原生Kubernetes初始化容器Init使用教程


阅读排行
推荐教程
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07新版Eclipse集成Tomcat时找不到server选项的解决方法
- 12-06IIS7 应用程序池自动回收关闭的解决方案
- 12-05Windows Server 2019安装VMware
- 12-05Windows服务器默认IE浏览器无法下载文件的解决方法
- 12-05Docker安装Jenkins全过程
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法





