📝
Terrariaのサーバーを新しいDocker Compose定義で立てたメモ
新しい定義のポイント
- Composeでこれまで指定してたバージョン句がない
-
healthcheck
句が復活してる -
depends_on
句にhealthcheck
句の条件を渡してる
services:
terraria:
image: ryshe/terraria:tshock-1.4.4.9-1.5.3-2
ports:
- "7777:7777"
volumes:
- ./Worlds:/root/.local/share/Terraria/Worlds
- ./logs:/tshock/logs
- ./plugins:/plugins
depends_on:
mysql:
condition: service_healthy
environment:
WORLD_FILENAME: "terraria.wld"
stdin_open: true
tty: true
restart: always
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: always
volumes:
mysql:
Terraria serverで情報が少なくて困ったこと
ryshe/terraria
は起動までの自動化はほどほどにやってくれるけどサーバー設定そのものの自動化についてはほとんど何もやってくれない。
https://github.com/ryansheehan/terraria にある通りまず自前で docker run
してワールドの生成と、それに付随して設定の JSON を吐き出させてからいろいろ設定をする必要がある。
ワールドの基本的なデータはファイルで保存されるけど、管理関係のデータはデフォルトでは SQLite3 に保存されるので MySQL にしたい場合は切り替え時にDumpしてがんばるか、コマンドでいろいろする前に最初に MySQL にするのがよい。
バックアップは自動でリストアみたいな仕組みはなくて、リネームされた古いファイルを WORLD_FILENAME
で指定するファイル名に置き換えるだけでよい。
全体的にゲームサーバーのCPU使用率が無駄に平均的に高め。プラグインとかは試してないのでやってない。
Discussion