@@ -119,6 +119,47 @@ At that point the token is persisted and future restarts should not require the
1191194 . The device flow appears again after restart
120120 The refresh token was not copied into ` config.txt ` correctly or Google invalidated it.
121121
122+ ## Local Docker Multi-Bot Test
123+
124+ This fork can be tested locally with multiple isolated bot containers.
125+
126+ Recommended local layout:
127+ 1 . One container per bot token.
128+ 2 . One data directory per bot under ` docker/instances/<bot-name> ` .
129+ 3 . One generated compose file for all active local test bots.
130+
131+ Quick start:
132+ 1 . Create a bot scaffold:
133+ ` powershell -ExecutionPolicy Bypass -File scripts/add-bot.ps1 devshmusic-test1 `
134+ 2 . Copy or edit ` docker/instances/devshmusic-test1/bot.env ` .
135+ 3 . Repeat for more bots.
136+ 4 . Regenerate compose:
137+ ` powershell -ExecutionPolicy Bypass -File scripts/render-compose.ps1 `
138+ 5 . Start all bots:
139+ ` docker compose -f docker-compose.generated.yml up -d --build `
140+
141+ Container-specific behavior:
142+ 1 . ` BOT_TOKEN ` and ` BOT_OWNER ` can be provided from ` bot.env ` .
143+ 2 . Relative state paths are resolved from ` JMUSICBOT_HOME ` , which defaults to ` /data ` in the container.
144+ 3 . Each bot keeps its own ` config.txt ` , ` serversettings.json ` , and ` Playlists/ ` under its own instance directory.
145+
146+ ## GHCR Container Publishing
147+
148+ GitHub Actions now builds the Docker image from this repository and publishes it to GHCR.
149+
150+ Published image:
151+ 1 . ` ghcr.io/devsh-graphics-programming/discordmusicbot:latest ` from ` master `
152+ 2 . ` ghcr.io/devsh-graphics-programming/discordmusicbot:sha-<commit> ` for immutable rollbacks
153+ 3 . ` ghcr.io/devsh-graphics-programming/discordmusicbot:<version> ` for matching Git tags
154+
155+ Recommended deployment flow:
156+ 1 . Build and verify locally first.
157+ 2 . Push to ` master ` when ready.
158+ 3 . On the target host run ` docker compose pull ` .
159+ 4 . Then run ` docker compose up -d ` .
160+
161+ That lets consumers update by pulling a new image instead of rebuilding the jar on the server.
162+
122163A cross-platform Discord music bot with a clean interface, and that is easy to set up and run yourself!
123164
124165[ ![ Setup] ( http://i.imgur.com/VvXYp5j.png )] ( https://jmusicbot.com/setup )
0 commit comments