Docker 部署 Phira 多人游戏服务器

avatar
作者
猴君
阅读量:0

介绍

Phira 是一个 Phigros 的二创社区。作为一个开源的音游,其提供了多人联机的功能,玩家可自行部署官方的 TeamFlos/phira-mp 作为联机服务器。

phiria-mp 采用 Rust 编写。开发者并没有在 GitHub 上提供预编译的可执行文件,因此若要自行部署,需要安装 Rust 环境,并使用 Cargo 进行编译。

为了保持生产环境的纯洁不被 Rust 污染,我下定决心为其创建一个容器镜像,即置于 Dokcer 环境中运行。

教程请直接浏览🪂「运行」部分。

实现

我创建了这样一个 Dockerfile 文件,将构建和运行分成了两个阶段,配合 Alpine 基础镜像以尽可能减少镜像体积。

软件包镜像源

其中我在第 8 行这一步为 Alpine 的包管理器更换了下载源(上海交通大学)。根据需要,可以更改或删除这一行。

使用的端口

在其他的一些教程中并没有提到此程序使用的是什么端口,在此我进行说明。

在此文章被编写时,此程序使用了 12346/TCP端口。 在此之前曾经使用过 12345/TCP 端口,但目前已被废除。

FROM rust:alpine as build  LABEL org.opencontainers.image.authors="i@xiaojin233.cn"  COPY . /build WORKDIR /build  RUN sed -i 's@dl-cdn.alpinelinux.org@mirrors.sjtug.sjtu.edu.cn@g' /etc/apk/repositories RUN apk update && \     apk add musl-dev pkgconfig openssl-dev openssl-libs-static RUN cargo build --release -p phira-mp-server   FROM alpine:latest  COPY --from=build /build/target/release/phira-mp-server /app/phira-mp-server  WORKDIR /app EXPOSE 12346 ENV RUST_LOG=info  CMD [ "/app/phira-mp-server" ] 

在实际使用时,需要先将储存库克隆至本地,在储存库的根目录下创建这个文件,随后再进行构建操作。

git clone https://github.com/TeamFlos/phira-mp.git cd phira-mp  vim Dockerfile # ...  docker build -t jinzhijie/phira-mp:latest . 

预构建镜像

为了方便使用,我提供了预构建的镜像,并将其发布在了 Docker Hub 和 Aliyun ACR 上。

Docker Hub: docker.io/jinzhijie/phira-mp:012f2c6
(https://hub.docker.com/r/jinzhijie/phira-mp)

Aliyun ACR: registry.cn-shanghai.aliyuncs.com/xiaojin233/phira-mp:012f2c6

由于 rust #89626,我在构建 arm64 的镜像时遇到了困难,所以在此我只提供了 amd64 的镜像。

运行

在此我仅作简单的运行操作。

docker run --name phira-mp --restart always -it -d -p 12346:12346 registry.cn-shanghai.aliyuncs.com/xiaojin233/phira-mp:012f2c6 

在 Phira 的设置界面的 多人游戏服务器 填写服务器的 IP 和端口。

设置服务器地址

连接服务器

运行后并不会立即产生日志,当用户在 Phira 中连接时才会出现日志。

2023-11-04T06:44:45.479488Z  INFO phira_mp_server::server: received connections from 112.65.0.0:56464 (29f5afb9-c9c0-4b88-9fa0-c43687000000), version: 1 

至此,服务器部署完成。可以愉快地和朋友游玩啦 ❤

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!