无需下载源码、编译项目或自行构建镜像。直接使用微软官方 ASP.NET Core 8.0 Runtime 镜像,并把 TokenPay 的 framework-dependent 发布包挂载到容器中即可。
资产安全警告:
TokenPay.db可能保存动态钱包私钥。必须持久化并备份整个运行目录,同时严格限制目录权限。不要让多个 TokenPay 容器同时读写同一个数据库。
从 Release 下载与服务器 CPU 架构匹配的包:
- 常见 Intel/AMD 64 位服务器:
linux-x64-framework-dependent - ARM64 服务器:
linux-arm64-framework-dependent
名称带 framework-dependent 的包不携带 .NET 运行时,容器中的 mcr.microsoft.com/dotnet/aspnet:8.0 会提供所需运行时。不要在 Linux 容器中使用 win-x64-framework-dependent 包。
以下示例在当前目录创建 publish,请将下载的压缩包完整解压到该目录:
mkdir -p publish
unzip TokenPay-*-linux-x64-framework-dependent.zip -d publish
chmod u+x publish/TokenPayARM64 服务器请下载并解压 linux-arm64-framework-dependent 包。
确认 publish/appsettings.json 和 publish/EVMChains.json 配置正确。配置方法见主配置说明和 EVM 配置说明。
在 publish 目录的上一级执行:
docker run -d \
--name TokenPay \
--restart always \
--entrypoint ./TokenPay \
--workdir /app \
-e TZ=Asia/Shanghai \
-e LC_ALL=zh_CN.UTF-8 \
-e LANG=zh_CN.UTF-8 \
-p 127.0.0.1:8080:8080 \
-v "$(pwd)/publish:/app" \
mcr.microsoft.com/dotnet/aspnet:8.0命令执行成功后,可以查看容器状态和日志:
docker ps --filter name=TokenPay
docker logs -f TokenPayASP.NET Core 8.0 容器默认监听 8080,因此无需设置 ASPNETCORE_URLS。127.0.0.1:8080:8080 只允许宿主机本地访问,反向代理目标应填写 http://127.0.0.1:8080。
默认不启用额外的 GC 内存节约策略。如果服务器内存较小,可在 docker run 命令中自行增加 -e DOTNET_GCConserveMemory=5。有效范围为 0~9:0 表示使用默认策略,数值越大越倾向于节省内存,但回收会更频繁,可能降低高负载时的性能。修改后需要重新创建容器才能生效。
需要停止或重新启动时执行:
docker stop TokenPay
docker start TokenPay在 publish 同级目录创建 compose.yml:
services:
tokenpay:
image: mcr.microsoft.com/dotnet/aspnet:8.0
container_name: TokenPay
restart: always
entrypoint: ["./TokenPay"]
working_dir: /app
environment:
TZ: Asia/Shanghai
LC_ALL: zh_CN.UTF-8
LANG: zh_CN.UTF-8
ports:
- "127.0.0.1:8080:8080"
volumes:
- ./publish:/app目录结构应类似:
tokenpay/
├── compose.yml
└── publish/
├── TokenPay
├── appsettings.json
├── EVMChains.json
└── ...
启动容器:
docker compose up -d查看状态和日志:
docker compose ps
docker logs -f TokenPay生产环境应使用 Nginx、Caddy 或其他反向代理提供 HTTPS,不建议把容器的 HTTP 端口直接暴露到公网。
- 停止并删除旧容器。直接运行方式执行
docker stop TokenPay && docker rm TokenPay;Compose 方式执行docker compose down。 - 备份整个
publish目录,尤其是TokenPay.db、appsettings.json和EVMChains.json。 - 下载相同架构的新版
framework-dependent包。 - 保留数据库和真实配置,替换其他程序文件,并重新执行
chmod u+x publish/TokenPay。 - 重新执行第 3 节的
docker run命令,或执行docker compose up -d,然后查看日志并完成小额支付测试。
若需要固定补丁版本,可把镜像标签由 8.0 改为经过验证的具体版本;使用 8.0 时,重新拉取镜像可以获得该产品线后续的运行时更新:
docker compose pull
docker compose up -d