网站Logo 丁鹏的学习笔记

批量生成docker容器配置模板,用于编排大批量的同类容器

dingpeng
3
2025-11-19

#下载地址:wget https://sy.dingpeng.cc/upload/mkconfig.py

#下载地址:curl -O https://sy.dingpeng.cc/upload/mkconfig.py


def generate_docker_compose(prefix="fsu", terminal_prefix="jsxnj", count=8, output_file="fsuclient.yml"):
    """
    生成Docker Compose配置
    
    Args:
        prefix: 服务名称前缀(如:fsu)
        terminal_prefix: TERMINAL_ID前缀(如:jsxnj)
        count: 生成的服务数量
        output_file: 输出文件名
    """
   
    # 基础模板
    template = f'''version: '3.8'
networks: 
  fsunetwork:
    driver: bridge
    ipam:
      config:
        - subnet: 172.200.200.0/24
services:
'''
    # 为每个服务生成配置,image填写实际需要的镜像的名称
    #####注意:image名称中,\斜杠可能会识别成转义字符,可选择使用/斜杠,docker compose都可以识别
    for i in range(1, count + 1):
        service_name = f"{prefix}{i}"
        terminal_id = f"{terminal_prefix}{service_name}"
       
        service_config = f'''  {service_name}:
    image: ${{image}}
    restart: no
    networks: 
      - fsunetwork
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/ppp
    environment:
      - TERMINAL_ID={terminal_id}
'''
        template += service_config
    # 写入文件
    with open(output_file, 'w') as f:
        f.write(template)
   
    print(f"已生成 {count} 个服务配置到 {output_file}")
    print(f"服务名称前缀: {prefix}")
    print(f"TERMINAL_ID前缀: {terminal_prefix}")
# 使用示例
if __name__ == "__main__":
    # 默认生成8个fsu服务,可用参数如下:
    # prefix: 服务名称前缀(如:fsu)
    # terminal_prefix: TERMINAL_ID前缀(如:jsxnj)
    # count: 生成的服务数量
    # output_file: 输出文件名
    generate_docker_compose(terminal_prefix='${servername}',count=3)
    #生成的fsuclient.yml文件中,有两个变量${servername}与${image},分别为服务名称前缀与镜像名称,运行时需创建.env文件注明变量值

动物装饰