Contents
前言
续上篇搭建怀旧模拟器(参见文章:使用docker基于emulatorjs部署web端怀旧游戏模拟器)之后,我又继续寻找类似的用docker搭建的有趣项目来丰富我博客的"游戏世界"版块,一番搜索,在github上发现了这个项目:rwv/chinese-dos-games,有网友将其做成了docker镜像:oldiy/dosgame-web-docker,这次就以此搭建docker。
部署dosgame
因为该docker内置了42款游戏,存放在容器内的/app/static/games目录里,所以第一次启动,不能直接用-v参数来挂载宿主机的文件夹到/app/static/games目录,因为宿主机文件夹是空的,直接挂载这些游戏就没了(其实也不是不可以,只是这样一来就需要手动添加每个游戏了)。所以正确的步骤是先不加-v参数部署,等docker成功运行之后,将/app/static/games里的内容复制到宿主机的挂载文件夹,删除docker,然后再用-v参数部署容器,这样以后要添加游戏就可以直接在宿主机的挂载目录操作即可。
1、不加-v参数直接部署
docker run -d --name dosgame -p 262:262 oldiy/dosgame-web-docker:latest
2、将容器内部的/app/static/games文件夹拷贝到宿主机的/docker/dosgame/games
mkdir -p /docker/dosgame
docker cp dosgame:/app/static/games /docker/dosgame
3、删除创建的容器
docker stop dosgame
docker rm dosgame
4、重新用-v参数部署
docker run --name dosgame -d --restart=always \
-p 262:262 \ #映射端口根据自己实际情况修改
-v /docker/dosgame/games:/app/static/games \ #将宿主机的对应文件夹挂载到容器
oldiy/dosgame-web-docker:latest
访问游戏
使用http://宿主机IP:262
访问游戏:
默认提供的游戏如下:
仙剑奇侠传的界面:
有些游戏不支持鼠标,比如仙剑奇侠传;有些支持,比如大富翁3,这些就等大家自己探索了。一般的键盘按键:enter确认,shift选择,↑ ↓ ← →是方向,Z和X对应手柄B和A,有时候space又是选择,大家可以多试试。
对于我只是体验怀旧一下,42款游戏已经足够多了,实际体验请访问博客的:"游戏世界"-"无敌的DOS游戏库",也可以直接点击:无敌的DOS游戏库。
配置公网访问
如果要发布到公网上的,大家需要根据实际环境和自己使用的反向代理选择最适合自己的发布方式,可以参考我以前的几篇文章:
1、docker系列 使用docker基于NPM搭建自己的反向代理
2、linux面板系列 配置反向代理并使用非443端口进行发布
3、家庭数据中心系列 通过国内备案云主机白嫖cloudflare实现国外快速访问国内站点
4、家庭数据中心系列 通过无公网IP的家庭宽带白嫖cloudflare实现快速建站(通用)
其中第1,2种方式适合有公网ip却没有合法443端口的环境(家庭宽带、未备案的云主机),需要在url后面加非标端口(如果使用cloudflare建站的不需要加端口,但是需要自定义源站端口,这个可以参考:家庭数据中心系列 通过cloudflare的Origin Rules解决建站有公网IP却没有合法的80、443端口的问题)。第3种方式适合有备案的云主机,第4种方式适合所有环境(包括没有公网IP的环境),也是我建议的方式(不管你的环境有没有公网IP,因为这种方式不需要直接在公网上跑https流量)。