«

Docker 最佳实战:定制 Docker compose 通用模板

时间:2024-4-3 11:26     作者:Anglei     分类: 虚拟化


1.为什么要做模板?

Docker 容器的创建启动方式有两种:
●通过 docker run 直接运行
●编写 docker-compose.yml 文件,通过 docker-compose 或是 docker compose 命令运行

说明: docker compose 的方式只有使用 Docker 官方提供的软件源安装 Docker 引擎并且安装了 docker-compose-plugin 才支持我们分享的内容都是基于 docker-compose.yml 创建并管理容器,为了提高工作效率,有必要定义一套标准的初始化模板。

2.规划创建标准化模板

本文以 Nginx 服务为例,创建标准化的 docker-compose.yml 文件通用模板。

2.1 创建容器存储根目录

本文使用 /data/containers 目录作为所有容器的根目录。

mkdir /data/containers

2.2 创建容器常用目录

以 Nginx 为例,创建 Nginx 容器数据的常用基本目录,实际使用中可根据需求调整。

mkdir -p /data/containers/nginx/{data,config,templates,logs}

●data 目录:建议, 存储容器持久化数据
●config 目录:建议, 存储容器使用的配置文件
●logs 目录:建议, 存储容器的持久化日志
●templates 目录:可选, 属于 Nginx 服务专属 ,用于存放配置文件模板

2.3 创建 docker-compose 文件模板

最小化的标准配置模板 docker-compose.yml。

version: '3.5'
services:
  nginx:
    container_name: nginx
    image: nginx:1.25.4
    environment:
      - NGINX_HOST=foobar.com
      - NGINX_PORT=80
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/data:/usr/share/nginx/html
      - ${DOCKER_VOLUME_DIRECTORY:-.}/config/nginx.conf:/etc/nginx/nginx.conf
      - ${DOCKER_VOLUME_DIRECTORY:-.}/templates:/etc/nginx/templates
    ports:
      - "80:80"
networks:
  default:
    name: nginx

重点说明: 一个最小化的模板包含以下基本内容,其他服务按模板修改套用即可。

●services.nginx:服务名称,用于 docker-compose 管理控制,一个 docker-compose.yml 中可以配置多个服务
●services.nginx.container_name:nginx 服务对应的容器名称
●services.nginx.image: ngin x 服务对应的容器使用的镜像,建议带上特定的 tag,不建议使用 latest
●services.nginx.environment:nginx 服务对应的容器运行时使用的环境变量
●services.nginx.volumes:nginx 服务对应的容器运行时挂载的目录或文件,本文使用了 shell 默认变量,定义了一个变量 DOCKER_VOLUME_DIRECTORY 并设置该变量的默认值为当前目录
●services.nginx.ports:nginx 服务对应的容器运行时需要暴露的端口
●networks:所有服务容器运行时创建的网络名称,同一个 docker-compose.yml 配置文件定义的服务可以使用相同的 networks

2.4 创建并启动服务

启动 Docker 服务,并设置开机自启。

cd /data/containers/nginx
# 下载 docker-compose 二进制的方式,使用下面的命令
# docker-compose up -d
# Docker 官方 RPM 包安装的 Docker,使用下面的命令
docker compose up -d

2.5 验证服务

查看 Docker 信息

 cd /data/containers/nginx
 docker compose ps -a

3. 自动化 Shell 脚本

全文所有的操作,我都整理成了自动化脚本:
自动化脚本 deploy-nginx.sh

#!/bin/bash
set -e

mkdir -p /data/containers/nginx/{data,config,templates,logs}
cd /data/containers/nginx

cat > docker-compose.yml << "EOF"
version: '3.5'

services:
  nginx:
    container_name: nginx
    image: nginx:1.25.4-alpine
    environment:
      - NGINX_HOST=foobar.com
      - NGINX_PORT=80
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/data:/usr/share/nginx/html
      #- ${DOCKER_VOLUME_DIRECTORY:-.}/config/nginx.conf:/etc/nginx/nginx.conf
      - ${DOCKER_VOLUME_DIRECTORY:-.}/templates:/etc/nginx/templates
    ports:
      - "80:80"
networks:
  default:
    name: nginx

EOF
docker compose up -d
docker compose ps

注意: 自动化脚本中 volumes 小节注释了一段内容,实际使用中可以提前准备好该文件,并取消注释。

4.总结

本文分享了定制最小化 docker-compose.yml 文件标准模板的详细流程及注意事项。主要内容概括如下:

●docker-compose.yml 模板的定制
●利用模板创建 Nginx 服务
●编写 docker-compose.yml 模板自动化部署服务的脚本

本文完结,相关标签: docker 模版

 版权所有:Anglei
 文章标题:Docker 最佳实战:定制 Docker compose 通用模板
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(1)

鲜花(0)

鸡蛋(0)
分享到: