นี่คืออิมเมจ Docker ที่มีตัวเลือกพร็อกซี Minecraft เช่น BungeeCord และ Velocity มีวัตถุประสงค์เพื่อใช้ร่วมกับคอนเทนเนอร์ itzg/minecraft-server
เมื่อใช้กับอิมเมจเซิร์ฟเวอร์ itzg/minecraft-server คุณสามารถปิดการใช้งานโหมดออนไลน์ซึ่งจำเป็นโดยบันจี้คอร์ดโดยการตั้งค่า ONLINE_MODE=FALSE
เช่น
docker run ... -e ONLINE_MODE=FALSE itzg/minecraft-server
ต่อไปนี้เป็นตัวอย่างที่สามารถเริ่มต้นด้วย docker compose up -d
:
services :
mc :
image : itzg/minecraft-server
environment :
EULA : " TRUE "
ONLINE_MODE : " FALSE "
volumes :
- mc-data:/data
proxy :
image : itzg/mc-proxy
environment :
BUNGEE_JAR_REVISION : " 1 "
CFG_MOTD : Powered by Docker
REPLACE_ENV_VARIABLES : " true "
ports :
- " 25565:25577 "
volumes :
- ./config.yml:/config/config.yml
- proxy-data:/server
volumes :
mc-data :
proxy-data :
รูปภาพนี้มี mc-monitor และใช้คำสั่ง status
เพื่อตรวจสอบคอนเทนเนอร์อย่างต่อเนื่อง ที่สามารถสังเกตได้จากคอลัมน์ STATUS
ของ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b418af073764 mc "/usr/bin/run-bungeecord.sh" 43 seconds ago Up 41 seconds (healthy) 0.0.0.0:25577->25577/tcp mc
คุณยังสามารถสืบค้นความสมบูรณ์ของคอนเทนเนอร์ด้วยวิธีที่เป็นมิตรต่อสคริปต์:
> docker container inspect -f "{{.State.Health.Status}}" mc
healthy
TYPE =บันจีคอร์ด
ประเภทของเซิร์ฟเวอร์ เมื่อตั้งค่าประเภทเป็น CUSTOM
จำเป็นต้องมีการตั้งค่าสภาพแวดล้อม BUNGEE_JAR_URL
ค่าที่เป็นไปได้:
BUNGEECORD
WATERFALL
VELOCITY
CUSTOM
หน่วยความจำ =512ม
ขนาดฮีปหน่วยความจำ Java ที่จะระบุให้กับ JVM การตั้งค่านี้เป็นสตริงว่างจะทำให้ JVM คำนวณขนาดฮีปจากขีดจำกัดหน่วยความจำที่ประกาศของคอนเทนเนอร์ อย่าลืมพิจารณาเพิ่ม -XX:MaxRAMPercentage=
(โดยแทนที่
) ให้กับ JVM_XX_OPTS
โดยที่ค่าเริ่มต้นของ JVM คือ 25%
ไอคอน
การตั้งค่านี้เป็น URL รูปภาพจะดาวน์โหลดและ (หากจำเป็น) แปลงไอคอนเป็น PNG ขนาด 64x64 และวางไว้ใน /server/server-icon.png
แทนที่_ICON
จะแทนที่ไฟล์ server-icon.png ที่มีอยู่แล้วในไดเร็กทอรี /server หากตั้งค่า ICON
INIT_MEMORY =${หน่วยความจำ}
สามารถตั้งค่าให้ใช้ขนาดฮีปเริ่มต้นอื่นได้
MAX_MEMORY =${หน่วยความจำ}
สามารถตั้งค่าให้ใช้ขนาดฮีปสูงสุดอื่นได้
JVM_OPTS / JVM_XX_OPTS
ตัวเลือกที่แยกช่องว่างเพิ่มเติมเพื่อส่งผ่านไปยัง JVM โดยที่ JVM_XX_OPTS
จะถูกเพิ่มในบรรทัดคำสั่ง java ก่อน JVM_OPTS
NETWORKADDRESS_CACHE_TTL =60
จำนวนวินาทีในการแคชการค้นหาที่อยู่เครือข่ายที่สำเร็จ ค่าที่ต่ำกว่าจะมีประโยชน์เมื่อรีสตาร์ทคอนเทนเนอร์เซิร์ฟเวอร์ Minecraft และ/หรือกำหนดเวลาใหม่และกำหนดที่อยู่ IP คอนเทนเนอร์ใหม่อีกครั้ง
ปลั๊กอิน
ใช้เพื่อดาวน์โหลดรายการ URL *.jar ที่คั่นด้วยเครื่องหมายจุลภาคไปยังโฟลเดอร์ปลั๊กอิน
-e PLUGINS=https://www.example.com/plugin1.jar,https://www.example.com/plugin2.jar
SPIGET_PLUGINS
คุณสามารถตั้งค่าตัวแปร SPIGET_PLUGINS
ด้วยรายการรหัสทรัพยากร SpigotMC ที่คั่นด้วยเครื่องหมายจุลภาค เพื่อดาวน์โหลดปลั๊กอิน SpigotMC โดยอัตโนมัติโดยใช้ spiget API ทรัพยากรที่เป็นไฟล์ zip จะถูกขยายไปยังไดเร็กทอรีปลั๊กอิน และทรัพยากรที่เป็นไฟล์ jar จะถูกย้ายไปที่นั่น
หมายเหตุ: ตัวแปรมีเจตนาสะกด SPIG ET ด้วย "E"
รหัสทรัพยากร สามารถระบุได้จากส่วนตัวเลขของ URL หลังชื่อย่อและจุด เช่น ID คือ 313 จาก
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
MODRINTH_โครงการ
รายการทากโปรเจ็กต์ (ชื่อสั้น) หรือรหัสที่คั่นด้วยเครื่องหมายจุลภาคหรือขึ้นบรรทัดใหม่ รหัสโปรเจ็กต์อยู่ในส่วน "ข้อมูลทางเทคนิค" Slug เป็นส่วนหนึ่งของ URL ของหน้าที่ตามหลัง /mod/
:
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
นอกจากนี้ เวอร์ชัน/ประเภทเฉพาะสามารถประกาศได้โดยใช้สัญลักษณ์โคลอนและรหัสเวอร์ชัน/ประเภทหลังตัวบุ้งของโปรเจ็กต์ รหัสเวอร์ชันสามารถพบได้ในส่วน "ข้อมูลเมตา" ประเภทเวอร์ชันที่ถูกต้อง ได้แก่ release
, beta
, alpha
ความละเอียดของการขึ้นต่อกันสามารถปรับได้โดยการตั้งค่า MODRINTH_DOWNLOAD_DEPENDENCIES
เป็น none
, optional
หรือ required
(ค่าเริ่มต้น)
หมายเหตุ ตัวแปร MINECRAFT_VERSION
จะต้องตั้งค่าเป็นเวอร์ชัน Minecraft ที่เกี่ยวข้อง
ENABLE_RCON
เปิดใช้งานเซิร์ฟเวอร์ rcon (ใช้ปลั๊กอินของบุคคลที่สามในการทำงาน)
BUNGEECORD
, WATERFALL
และ CUSTOM
VELOCITY
RCON_PORT
กำหนดพอร์ตสำหรับ rcon
RCON_รหัสผ่าน
กำหนดรหัสผ่านสำหรับ rcon
BUNGEE_JOB_ID =lastStableBuild
รหัสงาน Jenkins ของสิ่งประดิษฐ์ที่จะดาวน์โหลดและเรียกใช้ และใช้เมื่อได้รับค่าเริ่มต้นเป็น BUNGEE_JAR_URL
BUNGEE_JAR_REVISION
มีค่าเริ่มต้นเป็น ${BUNGEE_JOB_ID}
แต่สามารถตั้งค่าเป็นค่าที่เพิ่มขึ้นตามต้องการเพื่อบังคับให้อัปเกรดไฟล์ jar BungeeCord ที่ดาวน์โหลดมา
BUNGEE_BASE_URL
ค่าเริ่มต้นเป็น:
BUNGEECORD
): https://ci.md-5.net/job/BungeeCordWATERFALL
): https://papermc.io/ci/job/Waterfall/ ใช้เพื่อรับค่าเริ่มต้นของ BUNGEE_JAR_URL
BUNGEE_JAR_URL
หากตั้งค่าไว้ สามารถระบุ URL แบบเต็มที่กำหนดเองของ BungeeCord.jar ได้ อย่างไรก็ตาม คุณจะไม่สามารถอ้างอิงตัวแปรสภาพแวดล้อมอื่นๆ จากภายใน docker run
ไฟล์เขียนได้ ค่าเริ่มต้นเป็น:
BUNGEECORD
): ${BUNGEE_BASE_URL}/${BUNGEE_JOB_ID}/artifact/bootstrap/target/BungeeCord.jar
สิ่งนี้มีลำดับความสำคัญมากกว่า BUNGEE_JAR_FILE
BUNGEE_JAR_FILE
สำหรับ TYPE=CUSTOM
อนุญาตให้ตั้งค่า BungeeCord JAR แบบกำหนดเองซึ่งอยู่ภายในคอนเทนเนอร์
ต้องเป็นเส้นทางที่ถูกต้องของไฟล์ที่มีอยู่
WATERFALL_VERSION =ล่าสุด
สำหรับ TYPE=WATERFALL
อนุญาตให้ดาวน์โหลดสตรีม Waterfall เฉพาะรุ่น
WATERFALL_BUILD_ID =ล่าสุด
สำหรับ TYPE=WATERFALL
อนุญาตให้ดาวน์โหลดบิวด์เฉพาะของ Waterfall ภายในเวอร์ชันที่กำหนด
VELOCITY_VERSION =ล่าสุด
สำหรับ TYPE=VELOCITY
ระบุเวอร์ชันของ Velocity ที่จะดาวน์โหลดและรัน
VELOCITY_BUILD_ID =ล่าสุด
สำหรับ TYPE=VELOCITY
อนุญาตให้ดาวน์โหลดรุ่นเฉพาะของ Velocity ภายในเวอร์ชันที่กำหนด
HEALTH_HOST = โลคัลโฮสต์
อนุญาตให้กำหนดค่าโฮสต์ที่ติดต่อเพื่อตรวจสอบสภาพคอนเทนเนอร์
HEALTH_USE_PROXY =เท็จ
ตั้งค่าเป็น "จริง" เมื่อใช้ตัวเลือก proxy_protocol
ของ Bungeecord
ENABLE_JMX =เท็จ
หากต้องการเปิดใช้งาน JMX แบบรีโมต เช่น สำหรับการโปรไฟล์ด้วย VisualVM หรือ JMC ให้เพิ่มตัวแปรสภาพแวดล้อม ENABLE_JMX=true
ตั้งค่า JMX_HOST
เป็น IP/โฮสต์ที่รันคอนเทนเนอร์ Docker และเพิ่มการส่งต่อพอร์ตของพอร์ต TCP 7091
/เซิร์ฟเวอร์
ไดเร็กทอรีการทำงานที่ BungeeCord เริ่มต้น นี่คือไดเร็กทอรีที่จะโหลด config.yml
/ปลั๊กอิน
ปลั๊กอินจะถูกคัดลอกข้ามจากไดเร็กทอรีนี้ก่อนที่เซิร์ฟเวอร์จะเริ่มทำงาน
/กำหนดค่า
เนื้อหาของไดเร็กทอรีนี้จะถูกซิงโครไนซ์กับไดเร็กทอรี /server
ตัวยึดตำแหน่งตัวแปรภายในไฟล์จะได้รับการประมวลผลตามที่อธิบายไว้ในส่วนด้านล่าง เว้นแต่ว่า REPLACE_ENV_DURING_SYNC
จะตั้งค่าเป็น "เท็จ"
25577
พอร์ตการฟังของ BungeeCord ซึ่งโดยทั่วไปคุณจะต้องการพอร์ตแมปไปยังพอร์ตเซิร์ฟเวอร์ Minecraft มาตรฐานที่ 25565 โดยใช้:
-p 25565:25577
ตารางต่อไปนี้แสดงเวอร์ชัน Java และสถาปัตยกรรม CPU ที่แท็กรูปภาพรองรับ:
แท็ก | ชวา | สถาปัตยกรรม |
---|---|---|
ล่าสุด | 17 | amd64, arm64, armv7 |
จาวา8 | 8 | amd64, arm64, armv7 |
จาวา11 | 11 | amd64, arm64, armv7 |
RCON ถูกเปิดใช้งานตามค่าเริ่มต้น ดังนั้นคุณจึงสามารถ exec
ลงในคอนเทนเนอร์เพื่อเข้าถึงคอนโซลเซิร์ฟเวอร์ Bungeecord ได้:
docker exec -i mc rcon-cli
หมายเหตุ: จำเป็นต้องมี -i
สำหรับการใช้งาน rcon-cli แบบโต้ตอบ
หากต้องการรันคำสั่งง่ายๆ ในครั้งเดียว เช่น การหยุดเซิร์ฟเวอร์ Bungeecord ให้ส่งคำสั่งเป็นอาร์กิวเมนต์ไปที่ rcon-cli
เช่น:
docker exec mc rcon-cli en
ในกรณีนี้ไม่จำเป็นต้องใช้ -i
หากต้องการแนบและโต้ตอบกับเซิร์ฟเวอร์ Bungeecord ให้เพิ่ม -it
เมื่อเริ่มต้นคอนเทนเนอร์ เช่น
docker run -d -it -p 25565:25577 --name mc itzg/mc-proxy
ด้วยการที่คุณสามารถแนบและโต้ตอบได้ตลอดเวลาโดยใช้
docker attach mc
จากนั้น Control-p Control-q เพื่อ แยกออก
สำหรับการเข้าถึงระยะไกล ให้กำหนดค่า Docker daemon ให้ใช้ซ็อกเก็ต tcp
(เช่น -H tcp://0.0.0.0:2375
) และเชื่อมต่อจากเครื่องอื่น:
docker -H $HOST:2375 attach mc
เว้นแต่คุณจะอยู่บน LAN ที่บ้าน/ส่วนตัว คุณควรเปิดใช้งานการเข้าถึง TLS
คู่มือการกำหนดค่า BungeeCord
หากต้องการติดตั้งเนื้อหาเซิร์ฟเวอร์ทั้งหมด (jars, mods, ปลั๊กอิน, การกำหนดค่า ฯลฯ) จากไฟล์ zip หรือ tgz ให้ตั้ง GENERIC_PACK
เป็นเส้นทางคอนเทนเนอร์หรือ URL ของไฟล์เก็บถาวร
หากจำเป็นต้องใช้แพ็คทั่วไปหลายแพ็คร่วมกัน ให้ตั้งค่า GENERIC_PACKS
แทน โดยคั่นรายการเส้นทางไฟล์เก็บถาวรและ/หรือ URL ไปยังไฟล์โดยคั่นด้วยเครื่องหมายจุลภาค
เพื่อหลีกเลี่ยงการทำซ้ำ แต่ละรายการจะมีค่านำหน้าด้วยค่า GENERIC_PACKS_PREFIX
และต่อท้ายด้วยค่า GENERIC_PACKS_SUFFIX
ซึ่งทั้งสองค่านี้เป็นทางเลือก ยกตัวอย่างตัวแปรต่อไปนี้
GENERIC_PACKS=configs-v9.0.1,mods-v4.3.6
GENERIC_PACKS_PREFIX=https://cdn.example.org/
GENERIC_PACKS_SUFFIX=.zip
จะขยายเป็น https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.org/mods-v4.3.6.zip
บางครั้งคุณมีม็อดหรือปลั๊กอินที่ต้องใช้ข้อมูลการกำหนดค่าซึ่งมีให้เฉพาะตอนรันไทม์เท่านั้น ตัวอย่างเช่น หากคุณต้องการกำหนดค่าปลั๊กอินเพื่อเชื่อมต่อกับฐานข้อมูล คุณไม่ต้องการรวมข้อมูลนี้ไว้ในที่เก็บ Git หรืออิมเมจ Docker ของคุณ หรือบางทีคุณอาจมีข้อมูลรันไทม์บางอย่าง เช่น ชื่อเซิร์ฟเวอร์ที่ต้องตั้งค่าในไฟล์กำหนดค่าของคุณหลังจากที่คอนเทนเนอร์เริ่มทำงาน
ในกรณีดังกล่าว จะมีตัวเลือกในการแทนที่ตัวแปรที่กำหนดไว้ภายในการกำหนดค่าของคุณด้วยตัวแปรสภาพแวดล้อมที่กำหนดไว้ที่รันไทม์ของคอนเทนเนอร์
หากคุณตั้งค่าตัวแปรสภาพแวดล้อม REPLACE_ENV_VARIABLES
เป็น TRUE
สคริปต์เริ่มต้นจะผ่านไฟล์ทั้งหมดภายในวอลุ่ม /server
ของคุณ และแทนที่ตัวแปรที่ตรงกับตัวแปรสภาพแวดล้อมที่คุณกำหนด ตัวแปรที่คุณต้องการแทนที่จำเป็นต้องประกาศเป็น ${YOUR_VARIABLE}
ซึ่งเป็นเรื่องปกติในภาษาเชลล์สคริปต์
ด้วย REPLACE_ENV_VARIABLE_PREFIX
คุณสามารถกำหนดคำนำหน้า โดยที่ค่าเริ่มต้นคือ CFG_
เพื่อให้ตรงกับตัวแปรสภาพแวดล้อมที่กำหนดไว้ล่วงหน้าเท่านั้น
หากคุณต้องการใช้ไฟล์สำหรับค่า (เช่น เมื่อใช้ความลับนักเทียบท่า) คุณสามารถเพิ่มส่วนต่อท้าย _FILE
ให้กับชื่อตัวแปรของคุณได้ (ในคำสั่ง run) ตัวอย่างเช่น ${CFG_PASSWORD_FILE}
จะถูกแทนที่ด้วยเนื้อหาของไฟล์ที่ระบุโดยตัวแปรสภาพแวดล้อม CFG_PASSWORD_FILE
นี่คือตัวอย่างแบบเต็มที่เราต้องการแทนที่ค่าภายใน database.yml
---
database :
host : ${CFG_DB_HOST}
name : ${CFG_DB_NAME}
password : ${CFG_DB_PASSWORD}
นี่คือลักษณะของไฟล์ docker-compose.yml
ของคุณ:
version : " 3.8 "
# Other docker-compose examples in /examples
services :
proxy :
image : itzg/mc-proxy
ports :
- " 25577:25577 "
volumes :
- " proxy:/server "
environment :
# enable env variable replacement
REPLACE_ENV_VARIABLES : " TRUE "
# define an optional prefix for your env variables you want to replace
ENV_VARIABLE_PREFIX : " CFG_ "
# and here are the actual variables
CFG_DB_HOST : " http://localhost:3306 "
CFG_DB_NAME : " minecraft "
CFG_DB_PASSWORD_FILE : " /run/secrets/db_password "
restart : always
volumes :
proxy :
secrets :
db_password :
file : ./db_password
เนื้อหาของ db_password
:
ug23u3bg39o-ogADSs
โปรแกรมแก้ไขตามเส้นทาง JSON สามารถนำไปใช้กับไฟล์ที่มีอยู่ตั้งแต่หนึ่งไฟล์ขึ้นไปโดยการตั้งค่าตัวแปร PATCH_DEFINITIONS
เป็นเส้นทางของไดเร็กทอรีที่มีไฟล์ json คำจำกัดความของโปรแกรมแก้ไขหนึ่งไฟล์ขึ้นไปหรือไฟล์ json ของชุดโปรแกรมแก้ไข
ฟิลด์ file
และ value
ของคำจำกัดความของแพตช์อาจมีตัวยึดตัวแปร ${...}
ตัวแปรสภาพแวดล้อมที่อนุญาตในตัวยึดตำแหน่งสามารถจำกัดได้โดยการตั้งค่า REPLACE_ENV_VARIABLE_PREFIX
ซึ่งมีค่าเริ่มต้นเป็น "CFG_"
ตัวอย่างต่อไปนี้แสดงไฟล์ชุดแพตช์ที่มีช่องต่างๆ ในไฟล์การกำหนดค่า paper.yaml
ที่สามารถแก้ไขได้และเพิ่ม:
{
"patches" : [
{
"file" : " /data/paper.yml " ,
"ops" : [
{
"$set" : {
"path" : " $.verbose " ,
"value" : true
}
},
{
"$set" : {
"path" : " $.settings['velocity-support'].enabled " ,
"value" : " ${CFG_VELOCITY_ENABLED} " ,
"value-type" : " bool "
}
},
{
"$put" : {
"path" : " $.settings " ,
"key" : " my-test-setting " ,
"value" : " testing "
}
}
]
}
]
}
รองรับรูปแบบไฟล์:
อิมเมจนี้อาจทำงานในฐานะผู้ใช้ที่ไม่ใช่รูท แต่จำเป็นต้องมีโวลุ่ม /server
ที่แนบมาซึ่งสามารถเขียนได้โดย uid นั้น เช่น:
docker run ... -u $uid -v $(pwd)/data:/server itzg/mc-proxy
แท็กรูปภาพ latest
ใช้ Java 21 แต่มีแท็กรูปภาพสำรองให้ทำงานกับ Java เวอร์ชันอื่นได้
สามารถใช้ตัวแปรอิมเมจ Java ดังที่แสดงไว้ที่นี่:
itzg/mc-proxy:{variant}
หรือใช้เวอร์ชันวางจำหน่าย เช่น 2024.5.0
itzg/mc-proxy:{release}-{variant}
ตัวแปร | เวอร์ชันจาวา | ประเภทของซีพียู |
---|---|---|
ล่าสุด | 21 | amd64,arm64 |
จาวา21 | 21 | amd64,arm64 |
จาวา17 | 17 | amd64,arm64,armv7 |
จาวา11 | 11 | amd64,arm64,armv7 |
จาวา8 | 8 | amd64,arm64,armv7 |