荣耀之链论坛

 找回密码
 立即注册
搜索
查看: 17|回复: 1

docker compose的使用方式

[复制链接]

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
发表于 2025-5-31 20:31 | 显示全部楼层 |阅读模式
https://www.doubao.com/thread/w968f6b68dae2bfdc

  1. Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过 YAML 文件配置应用服务,只需一个命令即可创建并启动所有服务。以下是其详细使用方式:


  2. ### **1. 安装 Docker Compose**
  3. 确保已安装 Docker Engine,然后安装 Compose 插件(适用于 Docker 20.10+):
  4. ```bash
  5. # Linux/macOS
  6. curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
  7. chmod +x /usr/local/bin/docker-compose

  8. # 验证安装
  9. docker compose version  # 注意中间有空格
  10. ```


  11. ### **2. 创建 `docker-compose.yml` 文件**
  12. 在项目根目录创建该文件,定义服务、网络和卷。例如,一个 Web 应用的配置:
  13. ```yaml
  14. version: '3.8'

  15. services:
  16.   web:
  17.     build: .  # 使用当前目录的 Dockerfile 构建镜像
  18.     ports:
  19.       - "8000:8000"  # 映射主机端口 8000 到容器端口 8000
  20.     depends_on:
  21.       - db  # 依赖数据库服务
  22.     environment:
  23.       - DB_HOST=db  # 环境变量配置
  24.       - DB_USER=postgres
  25.       - DB_PASSWORD=postgres

  26.   db:
  27.     image: postgres:14  # 使用官方 PostgreSQL 镜像
  28.     volumes:
  29.       - postgres-data:/var/lib/postgresql/data  # 挂载数据卷
  30.     environment:
  31.       - POSTGRES_USER=postgres
  32.       - POSTGRES_PASSWORD=postgres

  33. volumes:
  34.   postgres-data:  # 定义命名卷
  35. ```


  36. ### **3. 主要命令**
  37. #### **启动服务**
  38. ```bash
  39. # 前台运行(可查看日志,按 Ctrl+C 停止)
  40. docker compose up

  41. # 后台运行(守护模式)
  42. docker compose up -d

  43. # 构建并启动服务(首次使用或镜像更新时)
  44. docker compose up --build
  45. ```

  46. #### **停止服务**
  47. ```bash
  48. # 停止并删除容器、网络(保留卷和镜像)
  49. docker compose down

  50. # 停止并删除容器、网络和卷
  51. docker compose down -v
  52. ```

  53. #### **查看状态**
  54. ```bash
  55. # 查看运行中的容器
  56. docker compose ps

  57. # 查看服务日志
  58. docker compose logs  # 所有服务日志
  59. docker compose logs web  # 特定服务日志
  60. ```

  61. #### **其他常用命令**
  62. ```bash
  63. # 启动已停止的服务
  64. docker compose start

  65. # 停止运行中的服务
  66. docker compose stop

  67. # 重启服务
  68. docker compose restart

  69. # 进入容器内部
  70. docker compose exec web bash  # 进入 web 服务的容器
  71. ```


  72. ### **4. 环境变量**
  73. 在 `docker-compose.yml` 中可引用环境变量:
  74. ```yaml
  75. services:
  76.   app:
  77.     environment:
  78.       - DB_PASSWORD=${DB_PASSWORD}  # 从 .env 文件或系统环境获取
  79. ```

  80. 创建 `.env` 文件(与 `docker-compose.yml` 同级):
  81. ```env
  82. DB_PASSWORD=secret
  83. ```


  84. ### **5. 多环境配置**
  85. 通过 `--file` 参数指定不同配置文件:
  86. ```bash
  87. # 使用 production.yml 覆盖默认配置
  88. docker compose -f docker-compose.yml -f production.yml up -d
  89. ```


  90. ### **6. 常见场景**
  91. #### **开发环境**
  92. 使用 `volumes` 挂载本地代码,实现实时更新:
  93. ```yaml
  94. services:
  95.   web:
  96.     volumes:
  97.       - ./app:/app  # 挂载本地代码到容器
  98. ```

  99. #### **部署到生产环境**
  100. 使用 `.env.production` 文件存储敏感信息,避免硬编码:
  101. ```bash
  102. docker compose --env-file .env.production up -d
  103. ```


  104. ### **示例项目流程**
  105. 1. 创建 `Dockerfile` 和 `docker-compose.yml`。
  106. 2. 执行 `docker compose up -d` 启动服务。
  107. 3. 修改代码(若有挂载),服务自动更新。
  108. 4. 执行 `docker compose down` 清理资源。


  109. ### **注意事项**
  110. - **版本兼容性**:`docker-compose.yml` 的 `version` 需与 Docker Engine 兼容。
  111. - **资源限制**:通过 `deploy.resources` 限制服务资源(如内存、CPU)。
  112. - **依赖顺序**:`depends_on` 仅控制启动顺序,不保证服务完全就绪(需健康检查)。

  113. 通过以上步骤,你可以高效管理多容器应用,简化开发、测试和部署流程。
复制代码
回复

使用道具 举报

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
 楼主| 发表于 2025-5-31 20:46 | 显示全部楼层

  1. mkdir /root/docker/musicn-container
  2. cd /root/docker/musicn-container
  3. vi docker-compose.yml
  4. ######################################
  5. version: '3.4'

  6. services:
  7. musicn:
  8.   image: ghcr.dockerproxy.com/wy580477/musicn-container:latest
  9.   container_name: musicn
  10.   restart: unless-stopped
  11.   entrypoint: ["/sbin/tini", "--", "msc", "-q"]
  12.   ports:
  13.    - "10002:7478"
  14.   volumes:
  15.    - ./data:/data

  16. ######################################
  17. 注意:这里的yml要严格遵守缩进规则
  18. 比如这个我是按照1个空格2个空格3个空格 用windows的记事本编辑的
  19. 然后直接复制粘贴
  20. ######################################


  21. docker compose config #检查,如果没问题会输出配置文件

  22. #启动
  23. # 前台运行(可查看日志,按 Ctrl+C 停止)
  24. docker compose up

  25. # 后台运行(守护模式)
  26. docker compose up -d

  27. # 构建并启动服务(首次使用或镜像更新时)
  28. docker compose up --build


  29. 通过第一种方式启动以后能看到显示
  30. 然后按ctrl+c停止
  31. 再通过docker ps -a命令可以看到容器已经停止了
  32. 可以再启动
  33. ############################################################################
复制代码


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

荣耀之链

GMT+8, 2025-6-18 03:18 , Processed in 0.014834 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表