feat: add docs/docker-compose.md (#645)
* feat: add docker-compose reference * fix: alter note
This commit is contained in:
		@@ -51,6 +51,7 @@ Quick Reference
 | 
			
		||||
[C++](./docs/cpp.md)<!--rehype:style=background: rgb(6 147 13);&class=contributing-->  
 | 
			
		||||
[Dart](./docs/dart.md)<!--rehype:style=background: rgb(64 196 255);-->  
 | 
			
		||||
[Docker](./docs/docker.md)<!--rehype:style=background: rgb(72 143 223);-->  
 | 
			
		||||
[Docker-Compose](./docs/docker-compose.md)<!--rehype:style=background: rgb(72 143 223);&class=tag&data-lang=Docker-->  
 | 
			
		||||
[Dockerfile](./docs/dockerfile.md)<!--rehype:style=background: rgb(0 72 153);&class=tag&data-lang=Docker-->  
 | 
			
		||||
[Django](./docs/django.md)<!--rehype:style=background: rgb(12 75 51);&class=contributing tag&data-lang=Python-->  
 | 
			
		||||
[Elixir](./docs/elixir.md)<!--rehype:style=background: rgb(124 26 156);&class=contributing tag&data-lang=Elixir-->   
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								assets/docker-compose.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								assets/docker-compose.svg
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 640 512" height="1em" width="1em">
 | 
			
		||||
  <path d="M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"/>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 713 B  | 
							
								
								
									
										160
									
								
								docs/docker-compose.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								docs/docker-compose.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,160 @@
 | 
			
		||||
docker-compose 备忘清单
 | 
			
		||||
===
 | 
			
		||||
这是 [docker-compose](https://docs.docker.com/compose/) 的官方文档。 你可以在这里找到最常见的 docker-compose 使用方式。
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
入门
 | 
			
		||||
---
 | 
			
		||||
<!--rehype:body-class=cols-2-->
 | 
			
		||||
 | 
			
		||||
#### 安装 docker-compose  需要安装(docker desktop)
 | 
			
		||||
 | 
			
		||||
- windows 安装
 | 
			
		||||
 | 
			
		||||
  - 官网地址:[https://docs.docker.com/desktop/install/windows-install/](https://docs.docker.com/desktop/install/windows-install/) 
 | 
			
		||||
 | 
			
		||||
- linux 版本安装
 | 
			
		||||
 | 
			
		||||
  - 官网地址:[https://docs.docker.com/desktop/install/linux-install/](https://docs.docker.com/desktop/install/linux-install/) 
 | 
			
		||||
 | 
			
		||||
- mac 版本安装
 | 
			
		||||
 | 
			
		||||
  - 官网地址:[https://docs.docker.com/desktop/install/mac-install/](https://docs.docker.com/desktop/install/mac-install/)
 | 
			
		||||
 | 
			
		||||
- 可以通过 releases 下载安装 releases 地址:[https://github.com/docker/compose/releases](https://github.com/docker/compose/releases)
 | 
			
		||||
 | 
			
		||||
- 安装成功
 | 
			
		||||
  
 | 
			
		||||
  ```sh
 | 
			
		||||
  docker compose version
 | 
			
		||||
  Docker Compose version v2.17.3
 | 
			
		||||
 | 
			
		||||
  docker --version
 | 
			
		||||
  Docker version 23.0.5, build bc4487a
 | 
			
		||||
 | 
			
		||||
  docker version
 | 
			
		||||
  Client: Docker Engine - Community
 | 
			
		||||
  Cloud integration: v1.0.31
 | 
			
		||||
  Version:           23.0.5
 | 
			
		||||
  API version:       1.42
 | 
			
		||||
  <...>
 | 
			
		||||
  ```
 | 
			
		||||
 | 
			
		||||
介绍
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
**Docker-Compose 是什么?**
 | 
			
		||||
 | 
			
		||||
  - `Docker-compsoe` 是一个开源项目,用于定义和运行多容器 `Docker` 应用程序的工具。由 `Docker` 社区维护。
 | 
			
		||||
 | 
			
		||||
  - 通过一个 `YAML` 文件来配置应用程序的服务,以便可以使用一个命令启动、停止和重启整个应用程序。
 | 
			
		||||
 | 
			
		||||
  - 开源地址:[https://github.com/docker/compose](https://github.com/docker/compose)
 | 
			
		||||
 
 | 
			
		||||
  - releases 地址:[https://github.com/docker/compose/releases](https://github.com/docker/compose/releases)
 | 
			
		||||
 | 
			
		||||
**基本概念:**
 | 
			
		||||
   
 | 
			
		||||
  - **服务 (services):** 一个服务指的是一个容器,即一个应用程序的一个实例。
 | 
			
		||||
   
 | 
			
		||||
  - **容器 (container):** `Docker` 容器,其中运行着应用程序的一个实例。
 | 
			
		||||
   
 | 
			
		||||
  - **镜像 (image):** `Docker` 镜像,用于创建容器的模板。
 | 
			
		||||
   
 | 
			
		||||
  - **Docker-Compose 文件:** 一个 `YAML` 文件,描述了应用程序的各个服务以及它们之间的关系、配置等信息。
 | 
			
		||||
 | 
			
		||||
**Docker-Compose 文件结构:**
 | 
			
		||||
  
 | 
			
		||||
  - `version`: `Docker-Compose` 文件的版本。
 | 
			
		||||
  
 | 
			
		||||
  - `services`: 定义了各个服务,每个服务都有自己的配置项,如镜像、端口映射、依赖等。
 | 
			
		||||
  
 | 
			
		||||
  - `networks`: 定义了应用程序使用的网络,可以自定义网络以控制服务之间的通信。
 | 
			
		||||
  
 | 
			
		||||
  - `volumes`: 定义了应用程序使用的卷,用于持久化数据或与主机共享文件。
 | 
			
		||||
 | 
			
		||||
命令
 | 
			
		||||
---
 | 
			
		||||
**常用命令:**
 | 
			
		||||
 | 
			
		||||
| docker compose命令       | 说明             | 常见参数说明         |
 | 
			
		||||
| ------------------------ | ---------------- | -------------------- |
 | 
			
		||||
| `docker compose up`      | 启动容器         | `-d` 后台运行容器    |
 | 
			
		||||
| `docker compose down`    | 停止容器         | `-v` 删除容器和卷    |
 | 
			
		||||
| `docker compose ps`      | 查看容器状态     |                      |
 | 
			
		||||
| `docker compose logs`    | 查看容器日志     | `-f` 跟随日志输出    |
 | 
			
		||||
| `docker compose exec`    | 进入容器         | `-it` 启动交互式终端 |
 | 
			
		||||
| `docker compose build`   | 构建镜像         |                      |
 | 
			
		||||
| `docker compose rm`      | 删除容器         |                      |
 | 
			
		||||
| `docker compose stop`    | 停止容器         |                      |
 | 
			
		||||
| `docker compose start`   | 启动容器         |                      |
 | 
			
		||||
| `docker compose restart` | 重启容器         |                      |
 | 
			
		||||
| `docker compose pull`    | 拉取镜像         |                      |
 | 
			
		||||
| `docker compose run`     | 运行一个临时容器 |                      |
 | 
			
		||||
| `docker compose config`  | 显示配置信息     |                      |
 | 
			
		||||
| `docker compose images`  | 列出镜像         |                      |
 | 
			
		||||
| `docker compose push`    | 推送镜像         |                      |
 | 
			
		||||
| `docker compose version` | 查看版本信息     |                      |
 | 
			
		||||
 | 
			
		||||
配置模板
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
**示例 Docker-Compose 文件:**
 | 
			
		||||
 | 
			
		||||
`docker-compsoe` 的配置文件是一个 `YAML` 文件,用于定义和运行多容器 Docker 应用程序。它使用 一个单一的 YAML 文件(通常命名为 `docker-compose.yml`)来定义多个容器的集合,以及它们之间的依赖关系和服务。
 | 
			
		||||
 | 
			
		||||
以下是一份 `docker-compose.yml` 文件的配置模板,包含了常用配置项和解释:
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
version: '3'  # 指定使用的Docker Compose文件格式版本,目前推荐使用3.x或更高
 | 
			
		||||
 | 
			
		||||
services:  # 定义一个或多个服务
 | 
			
		||||
  service1:  # 服务名称
 | 
			
		||||
    image: nginx:latest  # 使用的Docker镜像,这里是Nginx的最新版本
 | 
			
		||||
    # 或者使用构建指令来从Dockerfile构建镜像
 | 
			
		||||
    build:
 | 
			
		||||
      context: ./path/to/Dockerfile  # Dockerfile所在的目录
 | 
			
		||||
      dockerfile: Dockerfile-alternative  # 可选的Dockerfile名称,默认是Dockerfile
 | 
			
		||||
 | 
			
		||||
    # 容器启动时执行的命令,覆盖默认的命令
 | 
			
		||||
    command: ["nginx", "-g", "daemon off;"]  # 以数组形式指定,防止shell解析
 | 
			
		||||
 | 
			
		||||
    ports:  # 容器端口与主机端口映射
 | 
			
		||||
      - "80:80"  # 主机80端口映射到容器的80端口
 | 
			
		||||
 | 
			
		||||
    volumes:  # 数据卷挂载
 | 
			
		||||
      - ./nginx.conf:/etc/nginx/nginx.conf:ro  # 将主机上的nginx.conf挂载到容器的/etc/nginx/nginx.conf,只读
 | 
			
		||||
      - ./logs:/var/log/nginx  # 将logs目录挂载到容器的/var/log/nginx
 | 
			
		||||
 | 
			
		||||
    environment:  # 设置环境变量
 | 
			
		||||
      - MYSQL_HOST=database  # 可以引用其他服务,这里假设有一个名为database的服务
 | 
			
		||||
      - MYSQL_PORT=3306
 | 
			
		||||
 | 
			
		||||
    depends_on:  # 服务启动顺序,这里表明service1依赖于database服务
 | 
			
		||||
      - database
 | 
			
		||||
 | 
			
		||||
    networks:  # 定义网络
 | 
			
		||||
      - my_network  # 参与名为my_network的网络
 | 
			
		||||
 | 
			
		||||
  service2:  # 另一个服务示例
 | 
			
		||||
    # ... 类似地定义其他服务
 | 
			
		||||
 | 
			
		||||
networks:  # 定义网络
 | 
			
		||||
  my_network:  # 网络名称
 | 
			
		||||
    driver: bridge  # 网络驱动,通常是bridge模式
 | 
			
		||||
 | 
			
		||||
volumes:  # 定义数据卷
 | 
			
		||||
  nginx_logs:  # 卷名称
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
   
 | 
			
		||||
**备忘录事项**
 | 
			
		||||
 | 
			
		||||
  - 配置文件中的缩进必须使用空格,不能使用制表符。
 | 
			
		||||
  - 可以使用环境变量来动态设置配置项,如数据库密码。
 | 
			
		||||
  - 使用 `Docker-Compose` 可以简化多容器应用程序的部署和管理,但需要注意容器之间的依赖关系和通信。
 | 
			
		||||
  - 当你修改了 `docker-compose.yml` 文件后,需要重新运行 `docker-compose up` 来使改动生效。
 | 
			
		||||
  - 使用 `docker-compose build` 仅重建镜像,而不启动容器。
 | 
			
		||||
  - 使用 `docker-compose restart` 重启容器。
 | 
			
		||||
  - 记得清理不再需要的容器和镜像,以避免磁盘空间不足。
 | 
			
		||||
		Reference in New Issue
	
	Block a user