Docker 搭建 Terraria 服务器


准备一个用于存放服务器数据的目录,分别编写 Dockerfile 与 docker-compose.yml 文件:

文件准备

DockerFile

注意,此处的的 14491.4.4.9 版本,为这篇文章编写时的最新版本,请与官方最新版本对齐。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FROM centos:7

ENV LANG en_US.utf8

WORKDIR /terraria

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
yum install -y \
wget \
unzip && \
wget https://terraria.org/api/download/pc-dedicated-server/terraria-server-1449.zip && \
unzip terraria-server-1449.zip && \
chmod 744 ./1449/Linux/TerrariaServer.bin.x86_64

CMD nohup sh -c "./1449/Linux/TerrariaServer.bin.x86_64 -config /terraria/config/serverconfig.txt"

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
version: "3.7"
services:
server:
build:
context: .
image: terraria:1.4.4.9
ports:
- "57777:7777"
container_name: terraria
restart: always
volumes:
- ./config/:/terraria/config
- ./worlds/:/terraria/worlds

获取配置文件

配置文件可以直接从容器内提取。

启动容器

在当前目录下运行命令,启动容器。

1
docker-compose up -d

正常启动后会在当前目录下生成 configworld 目录,分别用于存放配置文件与世界文件。

提取配置文件

执行命令,从容器中获取配置文件,存放至 config 目录下。

1
docker cp terraria:/terraria/1449/Windows/serverconfig.txt ./config/serverconfig.txt

启动服务器

修改配置文件

为保证 world 的数据能够持久化保存到 world 目录内,需要对配置文件做出更改。

找到 #world=#worldpath= 行,去除 # 号,修改为如下内容:

1
2
world=/terraria/worlds/[world-name].wld
worldpath=/terraria/worlds/

找到 #port= 行,去除 # 号。注意,建议此处指定为 7777,如果必须要修改,请同步修改 docker-compose.yml - ports 的第二个数字。

其他的按个人需求酌情更改,每一项均有英文注释,如需启用某项,删除掉前面的 # 即可。

重启服务

在服务器根目录下执行命令,重启服务。

1
docker-compose restart

等待世界创建完成,可通过如下命令查看 docker 日志,确定世界创建进度。

1
docker-compose log -tf --tail 100

当出现以下内容时,世界创建完成,可以尝试进入服务器了。

1
2
3
4
terraria  | 2022-12-05T17:55:13.038180100Z Listening on port 7777
terraria | 2022-12-05T17:55:13.038183200Z Type 'help' for a list of commands.
terraria | 2022-12-05T17:55:13.038185500Z
terraria | 2022-12-05T17:55:13.124762400Z : Server started

测试连接

进入对应版本的游戏,选择 多人模式 - 通过IP加入,输入服务器 ip 地址(本地环境下为 127.0.0.1)与端口 57777,正常进入游戏,即成功搭建 Terraria 服务器。