[docker-compose] ブラウザでレトロゲーム「Cloud Retro」2
ブラウザでレトロゲームが遊べる Cloud Retro を立てたことを書いた。
[docker-compose] ブラウザでレトロゲーム「Cloud Retro」
https://wacw.cf/post/2025/2025-01-15f_cloud-retro/
しかし問題は別端末からだと ROM の読み込みができないことだった。
そこで Docker のネットワークを使って実現させてみることにした。
結論から書くと、うまくいかなかった。
環境:
・macOS Sequoia 15.0.1(英語環境)
・Docker Desktop on Mac 4.34.2
(1)Docker で cloudgame-net という名前でネットワークを作成する。
1$ sudo docker network create --driver bridge cloudgame-net
(2)Cloud Retro の docker-compose.yaml
に以下のようにネットワーク情報を追記する。
1services:
2
3 cloud-game:
4 build: .
5 image: cloud-game-local
6 container_name: cloud-game-local
7 environment:
8 - DISPLAY=:99
9 - MESA_GL_VERSION_OVERRIDE=4.5
10 - CLOUD_GAME_WEBRTC_SINGLEPORT=8443
11 # - CLOUD_GAME_WEBRTC_ICEIPMAP=127.0.0.1
12 - CLOUD_GAME_COORDINATOR_DEBUG=true
13 - CLOUD_GAME_WORKER_DEBUG=true
14 # - PION_LOG_TRACE=all
15 ports:
16 - "8000:8000"
17 - "9000:9000"
18 - "8443:8443/udp"
19 command: >
20 bash -c "./coordinator & ./worker"
21 volumes:
22 - ./assets/cores:/usr/local/share/cloud-game/assets/cores
23 - ./assets/games:/usr/local/share/cloud-game/assets/games
24 - x11:/tmp/.X11-unix
25 networks:
26 - cloudgame-net
27 xvfb:
28 image: kcollins/xvfb:latest
29 volumes:
30 - x11:/tmp/.X11-unix
31 command: [ ":99", "-screen", "0", "320x240x16" ]
32 networks:
33 - cloudgame-net
34
35volumes:
36 x11:
37
38networks:
39 cloudgame-net:
40 driver: bridge
41 external: true
(3)Docker の Firefox コンテナを立てる。その際、cloudgame-net に追加するようにしておく。
1$ sudo docker run -d \
2 --name=firefox \
3 --security-opt seccomp=unconfined `#optional` \
4 -e PUID=1000 \
5 -e PGID=1000 \
6 -e TZ=Asia/Tokyo \
7 -e FIREFOX_CLI=https://www.google.com/ `#optional` \
8 -p 3000:3000 \
9 -p 3001:3001 \
10 --shm-size="1gb" \
11 --restart unless-stopped \
12 --network cloudgame-net\
13 lscr.io/linuxserver/firefox:latest
(4)iPad で http://{Mac の IP アドレス}:3000
にアクセスすると Firefox が Mac のブラウザ内で使えるようになる。
(5)以下のコマンドで Firefox および Cloud Retro のコンテナが cloudgame-net のネットワークに追加されていることが分かる。
1$ sudo docker network inspect cloudgame-net
(6)Firefox で http://{Mac の IP アドレス}:8000
(http://localhost:8000
ではない)にアクセスすれば、Cloud Retro が使えるようになる。
すると ROM がちゃんと読み込まれている。
ただし実際に操作ができない。キーをタッチしてもほとんど機能しない(一部動く)。Firefox 上部のスピーカーアイコンを押すとゲームの音楽を再生できるんだけど。
参考:
[docker-compose] 基本をおさらいし、各種項目とnetworksについて理解を深めよう! #Docker - Qiita
https://qiita.com/sotaheavymetal21/items/3ebc4c94bc4af9f087e3
別々のdocker-compose環境同士でネットワーク間を連携する
https://zenn.dev/shimakaze_soft/articles/a91d9ec8b14a21
Dockerのブリッジ・ネットワークを利用したコンテナ間通信を行う
https://zenn.dev/yo_yamada/articles/16a883f560fb96
Amazon.co.jp: PlayStation 5(CFI-2000A01) : ゲーム
https://amzn.to/4gXs8PM