叫地主!抢地主!我抢!我用 NAS 跑斗地主
叫地主!抢地主!我抢!...... 耳边想起熟悉的斗地主的声音,后台有粉丝留言想让出一个斗地主的docker部署教程,今天为大家分享在NAS部署斗地主,整个部署过程非常简单,跟着家教程来就可以。
一、体验斗地主
进入游戏,根据自己的实际情况,选择你是新手还是大神,如果选择新手,将会花5分钟查看攻略。

先来体验下简单人机对战,很容易拿到一副好牌。

都不用思考,第一局轻松胜出!

还可以查看回放进行整体复盘

在右侧有输赢的记录。

体验下锦标赛,AI对手还是比较有实力,比简单的人机对战难度上升不少。

第一局还没怎么出牌竟然输了。

再开第二局的时候还在给大家截图游戏画面,我就输了,对方牌太好。

事不过三,第三局终于让我赢了一把!不愧是锦标赛模式,还是有难度的。

自定义模式可以调整AI的难度。

残局训练,顾名思义,手里给一些打剩余的牌,让你接着打。

闯关成功后,会解锁下一关。

赢了之后,会解锁新的牌局。

极限挑战模式,可以挑战下自己的牌技。

在牌谱工坊可以查看牌局的精彩回放。

如果你是新手,还为你准备斗地主的教程。

刚开始想创建房间进行好友对战,创建房间点不动。

有个临时的解决方法,在这个页面按F12,进入“控制台 / Console,
先手动输入:allow pasting ,按回车
再将下方的代码粘贴进去,按回车。
document.querySelectorAll('.lan-tab').forEach(tab => {
tab.onclick = () => {
const type = tab.dataset.tab;
document.querySelectorAll('.lan-tab').forEach(item => {
item.classList.toggle('active', item === tab);
});
document.getElementById('lan-join-panel')
?.classList.toggle('hidden', type !== 'join');
document.getElementById('lan-host-panel')
?.classList.toggle('hidden', type !== 'host');
};
});

再返回该页面就可以创建房间啦。

二、NAS部署
进入NAS,打开ContainerStation,将下方的代码进行复制粘贴。
services:
doudizhu:
image: docker.1ms.run/doudizhu-webgame:qnap
build:
context: .
dockerfile_inline: |
# 使用国内镜像拉取 Node.js,绕过 registry-1.docker.io
FROM m.daocloud.io/docker.io/library/node:20-alpine AS builder
WORKDIR /app
# 下载项目源码,不依赖 NAS 上的 git
ADD https://github.com/Hanazar-Games/Doudizhu-webgame/archive/refs/heads/main.tar.gz /tmp/source.tar.gz
RUN tar -xzf /tmp/source.tar.gz
-C /app
--strip-components=1
&& rm -f /tmp/source.tar.gz
# 使用 npm 镜像安装依赖并构建前端
RUN npm config set registry https://registry.npmmirror.com
&& npm ci
&& npm run build
# 运行阶段同样必须使用镜像地址
FROM m.daocloud.io/docker.io/library/node:20-alpine
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=3001
COPY --from=builder /app/package.json /app/package-lock.json ./
RUN npm config set registry https://registry.npmmirror.com
&& npm ci --omit=dev
&& npm cache clean --force
COPY --from=builder /app/server ./server
COPY --from=builder /app/dist ./dist
EXPOSE 3001
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3
CMD node -e "fetch('http://127.0.0.1:3001/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
CMD ["node", "server/index.js"]
container_name: doudizhu-game
ports:
- "3001:3001"
environment:
PORT: "3001"
NODE_ENV: production
restart: unless-stopped

创建应用程序,整个过程很快。

部署完成后,在浏览器中输入NAS的ip+端口号可以访问该项目。本期文章希望你能够喜欢。
