使用 Synology Container Manager 部屬 Discord Bot
本文會說明如何用 Container Manager 從 Docker Hub 下載 Discord Bot 的 Image 後部屬到 Synology Nas 上。
目次
前置準備
如果還沒將你的 Discord bot 的 Image 上傳到 Docker Hub 的話可以參考我之前寫的文章。
https://ted.familyds.com/2025/03/10/%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8-docker-%e6%89%93%e5%8c%85-discord-bot-%e4%b8%a6%e7%99%bc%e4%bd%88%e5%88%b0-docker-hub/
以下的範例使用上文所上傳的 Image。
下文使用的 docker_test_bot
Image 已經更名成 discord_test_bot
。
下載
在 Container Manager 裡面 倉庫伺服器 搜尋你的 Image 下載
下載完後會出現在映像檔中。
製作 Container
STEP
新增容器
到映像檔選擇剛剛下載的 Image 執行 命名 Container 下一步
STEP
儲存空間設定
因為我的 Discord Bot 會用到 db 與 log 兩個 volumes, 所以在這裡設定 volume 的儲存位置。
選擇要儲存 log 的資料夾, 然後旁邊輸入 /app/log
, 代表將 Container 中的 /app/log 這個資料夾同步到 Nas 指定的資料夾。
然後選擇要儲存 db 的資料夾, 旁邊輸入 /app/db
。
STEP
環境設定
環境設定新增 BOT_AUTHOR_ID
跟 BOT_TOKEN
下一步
STEP
完成
確認沒問題後 完成。
成功執行後 Container 的前面亮綠燈就 OK 了。
常見問題
- 如果 Container 啟動時出現錯誤怎麼辦
-
通常是你指定的 Volume 資料夾權限不足 (沒有權限讀寫你指定的資料夾) 或環境變數沒有設定成功, 詳細情況可以進入你的 Container 的詳細資訊 日誌, 來查看詳細的原因。
- Container 不斷重新啟動怎麼辦
-
因為在新增 Container 的時候勾到了 啟用自動重啟
的關係, 這個功能隨著錯誤的次數提升, 重啟的間隔會越來越久, 選擇停止
或強制停止
就好了。
- 如果 Volume 的內容沒有出現原本 Image 內包含的檔案
-
在 Container Manager 中, 在設定 Nas 的哪個資料夾 (a) 要跟 Container 的哪個資料夾 (b) 同步 (就是 Volume 那邊), 開始執行 Container 後, 系統會將 a 覆蓋 b, 所以如果你的 a 原本是空的, 那覆蓋過去後 b 就會是空的, 如果你需要 b 中的檔案執行的話, 就在執行 Container 後複製一份到 a 就行了。
- 刪掉 Container 後 Volume 的內容會不見嗎
-
不會。
- 想用專案的方式可以嗎
-
可以, 建立專案後選擇建立 compose.yaml 後修改下面的範本就可以了。
使用當前路徑:
YAMLservices:
bot:
image: 'alone0506/discord_test_bot'
container_name: 'test_bot'
environment:
- BOT_AUTHOR_ID=your_id
- BOT_TOKEN=your_bot_token
volumes:
- ./db:/app/db
- ./log:/app/log
或手動指定路徑:
YAMLservices:
bot:
image: 'alone0506/discord_test_bot'
container_name: 'test_bot'
environment:
- BOT_AUTHOR_ID=your_id
- BOT_TOKEN=your_bot_token
volumes:
- /volume1/docker/discord_test_bot/db:/app/db
- /volume1/docker/discord_test_bot/log:/app/log
コメント