介绍
docker-compose 简单来说: 就是一个多容器定义和运行的编排工具, 主要需要学习以下内容:
- 还是需要一个
Dockerfile
保证能在任何环境下运行 - docker-compose 配置文件
docker-compose.yaml
- 启动/停止命令
安装
注:最新版本的 docker 已经内置了 compose 命令
bash
# 下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 给予可执行的权限
sudo chmod +x /usr/local/bin/docker-compose
# 查看是否安装好
docker-compose
快速体验
https://docs.docker.com/compose/gettingstarted/
官网运行的 docker-compose 实例
- 创建应用
app.py
- 使用
Dockerfile
将应用打包为镜像 - 使用
docker-compose.yaml
定义服务, 比如web
redis
- 使用
docker-compose up
命令启动项目
以上项目的启动(docker-composer up)流程
bash
# 1. 创建网络 "test_default"
# Creating network "test_default" with the default driver
# 2. 执行 docker-compose.yaml 中定义的服务容器
# Building web
# Sending build context to Docker daemon 5.632kB
# Step 1/10 : FROM python:3.7-alpine
# 3.7-alpine: Pulling from library/python
# a0d0a0d46f8b: Pull complete
# ... 总共 10 个步骤
# 3. 启动服务
查看运行结果
项目启动后, 查看 images/containers 的变化
在 第2步
docker-compose 启动的时候, 会检查配置文件中需要用到的镜像, 如果有本地没有就会自己去下载
停止项目
bash
# 在 docker-compose.yaml 同级目录下执行:
docker-compose down
docker-compose 配置编写规则
docker-compose 配置的编写规则简单来说: 就是 docker-cmopose.yaml
的编写规则,
既然要写 yaml
代码, 那就必须先了解 yaml
的语法规则
核心规则
常用的规则有以下几个:
yaml
services: # 服务列表(将代码打包成镜像然后跑起来)
network: # 网络列表(通过网络将服务连接起来)
volumns: # 容器卷列表(将数据持久化)
实用的在线工具
使用 composerize 将 docker run xxx 转换为 docker-compose.yaml 的语法
TODO
写个前后端分离的示例项目, 用 docker-compose 部署
前端
- nginx + vue3
后端
- express + mysql