iT邦幫忙

2

Week25 - 用Minecraft來說明Docker為什麼這麼香 - Docker-Compose篇 [Server的終局之戰系列]

本文章同時發佈於:


大家好,繼上次Week24 - 用 Minecraft 來說明 Docker 為什麼這麼香 - 實作篇的文章後,接下來要實作此系列最一開始的目標「啟動多個 Minecraft Server」。

而 Docker-Compose 就是啟動多個 Server 的最佳幫手!

什麼是 Docker-Compose

簡單來說就是:

管理多個 Docker 的程式。

大家應該都還記得啟動 Minecraft Server 的指令:

$ docker run -p 25565:25565 superj80820/minecraft-server

如果我們要再透過 Docker 來啟動第二個 Minecraft Server,必須要在這樣下指令:

$ docker run -p 25566:25565 superj80820/minecraft-server

可以發現-p這個轉發 port 的參數,因為 25565 已經被第一個 Server 使用,所以必須換成 25566。

如果是兩個 Server 還好,但如果是幾十甚至幾百個 Server,就會有許多 port 這類的參數要調整。

而 Docker-Compose 就是可以把每個 Docker 的參數預先設定好,方便一起管理的程式。

安裝 Docker-Compose

Mac, Windows, Linux 的安裝方法官網寫得很清楚了,這邊就貼上官網連結,不多加討論,本文章以實作文主 XD。

透過 Docker-Compose 啟動多個 Minecraft-Server

首先可以透過 git 來 clone 完整範例,並進入 week25 資料夾

$ cd week25

使用以下指令啟動:

$ docker-compose up

這樣就起好兩台 Minecraft Server 了,非常簡單。

透過 Docker-Compose 設定,就不用再打許多參數了,而這些設定檔就放在 docker-compose.yml 這檔案裡。


此次 Minecraft Server 採用 docker-minecraft-server 的 Docker Image,此 Image 設計的相當彈性方便 XD ~

我們就來看看 docker-compose.yml 幫我們做了什麼吧,細節我都寫在註解中了:

# Docker-Compose 使用的版本,每個版本提供的設定功能不同,可參考官網:https://docs.docker.com/compose/compose-file/
version: "3.5"

# 使用 docker-compose up 指令後,要啟動的 servers ,也可稱為 services ,這邊設定了 server-1.16.1 與 server-1.15.2 兩個不同版本的 Minecraft Server。
services:
  server-1.16.1:
    # 使用指定的 Docker Image 。
    image: itzg/minecraft-server
    # 就是原本 -p 25565:25565 的指令,將 docker 內部的 25565 port 轉發至本機的 25565 port 。
    ports:
      - 25565:25565
    # 設定環境變數,原本的 Minecraft Server 我們透過 eula.txt 與 server.properties 來設定 Server ,而此 Image 是透過啟動 Docker 後, Docker 內部的環境變數來設定 Server ,環境變數的相關文件在此:https://github.com/itzg/docker-minecraft-server#server-configuration
    environment:
      EULA: "TRUE"
      VERSION: "1.16.1"
    # 如果 Server 當機導致 Docker 崩潰了,會自動重啟 Docker 。
    restart: always
  server-1.15.2:
    # 使用指定的 Docker Image 。
    image: itzg/minecraft-server
    # 就是原本 -p 25566:25565 的指令,將 docker 內部的 25565 port 轉發至本機的 25566 port 。
    ports:
      - 25566:25565
    # 設定環境變數,原本的 Minecraft Server 我們透過 eula.txt 與 server.properties 來設定 Server ,而此 Image 是透過啟動 Docker 後, Docker 內部的環境變數來設定 Server ,環境變數的相關文件在此:https://github.com/itzg/docker-minecraft-server#server-configuration
    environment:
      EULA: "TRUE"
      VERSION: "1.15.2"
    # 如果 Server 當機導致 Docker 崩潰了,會自動重啟 Docker 。
    restart: always

有了 Docker-Compose 後,我們可以把多個 Server 的設定檔都設定至 docker-compose.yml ,並把 docker-compose.yml 存至 git repository 或者任何線上儲存庫。

以後遇到新環境的建設,直接把 docker-compose.yml 下載下來並且下 docker-compose up 指令,就可以把整群 Server 都一次起好了,這就是 Docker-Compose 的魅力之處~


謝謝你的閱讀,也歡迎分享討論指正~

參考與引用資料


尚未有邦友留言

立即登入留言