首页 / 服务中心 / 教程中心 / Docker玩法 / 简单易懂使用Docker Compose容器编排书写规则
简单易懂使用Docker Compose容器编排书写规则
2025/02/25

在绿联NAS私有云中,我们常常会用到Docker功能来拓展NAS各类玩法。而在搭建 Docker 容器时,采用 Docker Compose 方式,能让搭建过程高效且便捷,快速将各类应用环境搭建就绪。


Docker Compose是一个用于定义和运行多容器 Docker 应用程序的工具,通过 docker-compose.yml 文件来配置应用的服务、网络和卷等。以下是 docker-compose.yml 文件的编写规则:


1. 版本声明

docker-compose.yml 文件开头需要声明版本,不同版本支持的特性有所不同。目前较常用的是版本 3,它支持 Docker 1.13.0 及以上版本。
yaml
version: '3'


2. 服务定义(services

services 部分定义了应用中的各个服务,每个服务对应一个容器。每个服务都有自己的配置项,以下是一些常见的配置:

2.1 image

指定要使用的 Docker 镜像。
yaml
services:
 web:
   image: nginx:latest


2.2 build

如果没有现成的镜像,需要从 Dockerfile 构建镜像,可以使用 build 选项。可以指定 Dockerfile 所在的目录,也可以指定 Dockerfile 的路径。

yaml
services:
 app:
   build:
     context: ./app  # Dockerfile 所在的目录
     dockerfile: Dockerfile.custom  # 自定义 Dockerfile 的名称


2.3 ports

将容器的端口映射到宿主机的端口,格式为 宿主机端口:容器端口

yaml
services:
 web:
   image: nginx:latest    
   ports:
     - "8080:80"


2.4 environment

设置容器的环境变量,可以是键值对,也可以是只指定变量名,从宿主机环境中获取值。

yaml
services:
 db:
   image: mysql:latest  
   environment:
     - MYSQL_ROOT_PASSWORD=secret      
     - MYSQL_DATABASE=myapp


2.5 volumes

将宿主机的目录或文件挂载到容器中,格式为 宿主机路径:容器路径

yaml
services:
 web:
   image: nginx:latest    
   volumes:
     - ./html:/usr/share/nginx/html


2.6 depends_on

指定服务之间的依赖关系,确保在启动当前服务之前,依赖的服务已经启动。

yaml
services:
 web:
   image: nginx:latest  
   depends_on:
     - app  
 app:
   image: myapp:latest


3. 网络定义(networks

可以定义自定义网络,让容器之间可以通过网络进行通信。

yaml
version: '3'
services:
 web:
   image: nginx:latest    
   networks:
     - my_network  
 app:
   image: myapp:latest  
   networks:
     - my_network
networks:
 my_network:
   driver: bridge


4. 卷定义(volumes

可以定义命名卷,用于持久化数据。

yaml
version: '3'
services:
 db:
   image: mysql:latest    
   volumes:
     - db_data:/var/lib/mysql
volumes:
 db_data:


完整示例

以下是一个完整的 docker-compose.yml 文件示例,包含一个 Nginx 服务和一个 MySQL 服务:

yaml
version: '3'
services:
 web:
   image: nginx:latest    
   ports:
     - "8080:80"
   volumes:
     - ./html:/usr/share/nginx/html    
   depends_on:
     - db
 db:
   image: mysql:latest    
   environment:
     - MYSQL_ROOT_PASSWORD=secret    
     - MYSQL_DATABASE=myapp    
   volumes:
     - db_data:/var/lib/mysql
volumes:
 db_data:


通过以上规则,你可以编写一个完整的 docker-compose.yml 文件,在NAS的Docker应用中可以将文件导入进去使用。








在线交流
关注微信公众号
服务热线:
0755-28066995
技术支持:
0755-21044617