Skip to content

在 Debian 环境下安装 Docker Compose

官网文档:https://docs.docker.com/compose/

安装

参考文档:https://docs.docker.com/compose/install/linux/#install-using-the-repository

安装 docker 时,可以选择全套安装。如果之前没有全套安装,现在只需要安装 docker-compose-plugin。

docker 全套安装参考:Docker Install 在 Debian 环境

compose.yaml 语法规则

Docker Compose 文件的默认路径为 compose.yaml (推荐使用)或 compose.yml,这些文件都保存在工作目录中。

常用命令

shell
# (前台启动)启动 compose.yaml 文件中定义的所有服务
docker compose up

# (推荐)后台启动(不会占用命令行窗口)
docker compose up -d

# 指定配置文件
docker compose -f /opt/nginx/compose.yaml up -d

# 停止并终止正在运行的服务(会删除相关的容器,但不会删除卷数据)
docker compose down 

# 连数据卷一起删除(数据清空,慎用!)
docker compose down -v

# 删除容器 + 删除网络 + 删除镜像
docker compose down --rmi all

# 查看 compose.yaml 文件中定义的所有服务日志
docker compose logs

# 实时刷新指定服务的日志
docker compose logs -f vita

# 列出 compose.yaml 文件中定义的所有服务及其当前状态
docker compose ps

日常使用

启动服务(长期运行)

shell
docker compose up -d

查看后台容器日志(想看日志时用)

shell
# -f 实时跟踪
docker compose logs -f

重启服务

shell
docker compose -f /opt/nginx/compose.yaml restart

修改配置后重启

shell
docker compose down

docker compose up -d

重置(清空所有东西,包括数据)

shell
docker compose down -v

彻底销毁环境(删除容器 + 删除网络 + 删除镜像)

shell
docker compose down --rmi all

关于 environment 的写法格式

字典格式(KEY: value)

yaml
environment:
  APP_DEBUG: "true"
  APP_PORT: "8080"
  APP_NAME: my-app

优点:视觉干净,结构清晰,看起来像配置文件。

痛点:YAML 有自动类型推断。如果不加引号,true、false、123 会被解析成布尔或数字,而 Docker 要求环境变量必须是字符串,可能导致应用无法识别。

必须加引号的场景:值包含 true/false、纯数字、yes/no、特殊字符(如 *、{、} 等 YAML 敏感符号)。

列表格式(- KEY=value)

yaml
environment:
  - APP_DEBUG=true
  - APP_PORT=8080
  - APP_NAME=my-app

优点:绝对安全,= 后面的整个值都被当作普通字符串,不会触发 YAML 的类型转换。即使写 - RUSTFS_CONSOLE_ENABLE=true 也不用加引号。

缺点:稍微冗长,视觉上不如字典整齐。

最佳实践

日常使用中,我更推荐使用列表格式(- KEY=value),理由很简单:

它永远不会因为 YAML 的自动类型推断而踩坑,书写时完全不用思考“这个值要不要加引号”,安全且一致。

如果你更喜欢字典格式的简洁,那么一定要养成习惯:所有值都加上引号。