terraria docker compose 構築メモ

docker compose で立ち上げるメモ

参考のURLにデフォルトでsqliteで保存されるとあったが自分もmysqlがいいので立ち上げて変更

docker-compose.yml

version: "3"

services:
  terraria:
    image: ryshe/terraria:tshock-1.4.4.9-5.2.0-3
    ports:
      - "7777:7777"
    volumes:
      - ./Worlds:/root/.local/share/Terraria/Worlds
      - ./logs:/tshock/logs
      - ./plugins:/plugins
    environment:
      WORLD_FILENAME: "pistel.wld"
      TZ: "Asia/Tokyo"
    depends_on:
      mysql:
        condition: service_healthy
    stdin_open: true
    tty: true
    restart: unless-stopped

  mysql:
    image: mysql:8.0.33
    ports:
      - "3306"
    command:
      - "--skip-log-bin"
      - "--slow_query_log=1"
    volumes:
      - mysql:/var/lib/mysql
      - ./mysql/logs:/var/log/mysql
      - ./mysql/config:/etc/mysql/conf.d
    environment:
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      MYSQL_DATABASE: terraria
      MYSQL_RANDOM_ROOT_PASSWORD: true
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-u", "user", "-ppassword"]
      timeout: 20s
      retries: 10
    restart: unless-stopped

volumes:
  mysql:

下記コマンドをupの前に叩く

-vで渡すのはdocker-composeで定義したworldsのもの、pistel.wldはワールド名、autocreateはワールドサイズ

ref: https://github.com/ryansheehan/terraria

sudo docker run -it -p 7777:7777 --rm -v ./Worlds:/root/.local/share/Terraria/Worlds ryshe/terraria:tshock-1.4.4.9-5.2.0-3 -world /root/.local/share/Terraria/Worlds/pistel.wld -autocreate 2

立ち上がったらexitで抜ける

そのあとdocker compose up -d で起動する

ホストマシンのWorldsにデータがディレクトリがあるのでWorlds/config.jsonを変更する

ServerPassword 設定したらワールドパスワードができる

MaxSlots ログインできる人数 8なので16に変更した

ServerName 一応名前つけた

"SpawnProtection": false, このイメージだとデフォルトで初期スポーンが壊せないようになってる、壊せていいのでtrue

参考1: https://blog.aoirint.com/entry/2021/terraria_tshock_docker/

参考2: Terrariaのサーバーを新しいDocker Compose定義で立てたメモ