dockerfile 内容

FROM ubuntu:20.04
RUN dpkg --add-architecture i386
RUN apt update && apt-get install curl wget libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 -y
RUN ln -s /usr/lib64/libcurl.so.4 /usr/lib64/libcurl-gnutls.so.4

docker-compose 内容

version: '2.1'
services: 
  update-dst:
    build: .
    container_name: update-dst
    command: 
      - sh
      - -c
      - |
        if [ ! -f ~/steamcmd/steamcmd.sh ]; then cd ~/steamcmd &&  wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && tar -xvzf steamcmd_linux.tar.gz; fi
        ~/steamcmd/steamcmd.sh +login anonymous +force_install_dir /root/dst +app_update 343050 validate +quit;
        sleep 5;
        echo  "start update dst again";
        ~/steamcmd/steamcmd.sh +login anonymous +force_install_dir /root/dst +app_update 343050 validate +quit;
        cp ~/steamcmd/linux32/libstdc++.so.6 ~/dst/bin/lib32/
        cp /usr/lib/libcurl.so.4 ~/dst/bin/lib32/libcurl-gnutls.so.4
    volumes: 
      - ./server_files/dst:/root/dst
      - ./server_files/steamcmd:/root/steamcmd
    dns:
      - '8.8.8.8'

## =================== ??? =======================
  dst-???-master:
    build: .
    container_name: dst-???-master
    working_dir: /root/dst/bin
    command: ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Master
    networks: 
      ???-network: # 由于设定服务master_ip bind_ip 需要用到 ip 地址
        ipv4_address: '192.168.100.10'
    volumes: 
      - ./server_files/dst:/root/dst ## 饥荒游戏服务器执行代码
      - ./server_files/steamcmd:/root/steamcmd:ro ## 饥荒游戏服务器初始化代码
      - ./game_files/???:/root/.klei ### 游戏文件
    dns:
      - '8.8.8.8'


  dst-????-caves:
    build: .
    container_name: dst-????-caves
    working_dir: /root/dst/bin
    command: ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Caves
    networks:
      www-network:
        ipv4_address: '192.168.100.20'
    volumes: 
      # - ./server_files/steamcmd
      - ./server_files/dst:/root/dst:ro
      - ./server_files/steamcmd:/root/steamcmd:ro
      - ./game_files/????:/root/.klei
    dns:
      - '8.8.8.8'



networks:
  www-network:
    ipam:
        config:
        - subnet: '192.168.100.0/24'


# volumes:  ## 单独的一个存储卷, 不是挂载普通文件目录形式
# 饥荒服务器配置文件 cluster.ini bind_ip 的意思是是 master 服务器绑定的ip, 与 master_ip 一致即可

之后在 docker-compose.yml 所在的目录下 执行 docker-compose up -d xxxxx-service-name xxxx-servcie-name 即可. 从klei官网下载的配置需要修改 bind_ip 和 master_ip 均为 Master 游戏容器设置的 ip.

如果启动时,报错提示ip相关问题,可以先清理一下network: docker network prune,参考

docker-compose.yml 内容参考

游戏服务器依赖安装参考 + 参考

定时任务参考