هذه صورة Docker توفر مجموعة مختارة من وكلاء Minecraft، مثل BungeeCord وVelocity. الغرض منه هو استخدامه مع حاويات خادم itzg/minecraft.
عند الاستخدام مع صورة الخادم itzg/minecraft-server، يمكنك تعطيل الوضع عبر الإنترنت، وهو ما يتطلبه Bungeecord، عن طريق تعيين 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
النوع = بونجيكورد
نوع الخادم . عند تعيين النوع على CUSTOM
، يلزم إعداد البيئة BUNGEE_JAR_URL
.
القيم المحتملة:
BUNGEECORD
WATERFALL
VELOCITY
CUSTOM
الذاكرة = 512 م
حجم كومة ذاكرة Java المراد تحديده لـ JVM. سيؤدي تعيين هذا إلى سلسلة فارغة إلى السماح لـ JVM بحساب حجم الكومة من حد الذاكرة المعلن للحاوية. تأكد من التفكير في إضافة -XX:MaxRAMPercentage=
(مع استبدال
) إلى JVM_XX_OPTS
، حيث يكون الإعداد الافتراضي لـ JVM هو 25%.
رمز
سيؤدي تعيين هذا إلى عنوان URL للصورة إلى تنزيل الأيقونة وتحويلها (إذا لزم الأمر) إلى PNG بحجم 64 × 64 ووضعها في /server/server-icon.png
.
OVERRIDE_ICON
سيتم تجاوز أي ملف server-icon.png موجود مسبقًا في الدليل /server إذا تم تعيين ICON
.
INIT_MEMORY =${MEMORY}
يمكن ضبطه لاستخدام حجم كومة أولي مختلف.
MAX_MEMORY =${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 الإضافية تلقائيًا باستخدام واجهة برمجة تطبيقات Spigot. سيتم توسيع الموارد التي تكون عبارة عن ملفات مضغوطة إلى دليل المكونات الإضافية وسيتم نقل الموارد التي هي مجرد ملفات jar إلى هناك.
ملاحظة: تم كتابة المتغير بشكل مقصود SPIG E T بالحرف "E"
يمكن تحديد موقع معرف المورد من الجزء الرقمي لعنوان URL بعد الاسم المختصر والنقطة. على سبيل المثال، المعرف هو 313 من
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
MODRINTH_PROJECTS
قائمة مفصولة بفواصل أو سطر جديد من الارتباطات الثابتة للمشروع (الاسم المختصر) أو المعرفات. معرف المشروع موجود في قسم "المعلومات الفنية". سبيكة هو جزء من عنوان 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_PASSWORD
تحديد كلمة المرور لـ rcon
BUNGEE_JOB_ID =lastStableBuild
معرف مهمة Jenkins للعنصر المراد تنزيله وتشغيله ويتم استخدامه عند اشتقاق القيمة الافتراضية لـ BUNGEE_JAR_URL
BUNGEE_JAR_REVISION
القيمة الافتراضية هي ${BUNGEE_JOB_ID}
، ولكن يمكن ضبطها على قيمة متزايدة بشكل تعسفي لفرض ترقية ملف BungeeCord jar الذي تم تنزيله.
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_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
/server
دليل العمل حيث بدأ تشغيل BungeeCord. هذا هو الدليل الذي سيتم تحميل config.yml
الخاص به.
/plugins
سيتم نسخ المكونات الإضافية عبر هذا الدليل قبل بدء تشغيل الخادم.
/التكوين
ستتم مزامنة محتويات هذا الدليل مع الدليل /server
. ستتم معالجة العناصر النائبة المتغيرة داخل الملفات كما هو موضح في القسم أدناه ما لم يتم تعيين REPLACE_ENV_DURING_SYNC
على "خطأ".
25577
منفذ الاستماع الخاص بـ BungeeCord، والذي ستحتاج عادةً إلى تعيين منفذ إلى منفذ خادم Minecraft القياسي 25565 باستخدام:
-p 25565:25577
يعرض الجدول التالي إصدارات Java وبنيات وحدة المعالجة المركزية المدعومة بعلامات الصور:
علامة | جافا | أبنية |
---|---|---|
أحدث | 17 | ايه ام دي 64، ارم 64، ارم 7 |
java8 | 8 | ايه ام دي 64، ارم 64، ارم 7 |
java11 | 11 | ايه ام دي 64، ارم 64، ارم 7 |
يتم تمكين 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 الخفي الخاص بك لاستخدام مقبس tcp
(مثل -H tcp://0.0.0.0:2375
) وإرفاقه من جهاز آخر:
docker -H $HOST:2375 attach mc
ما لم تكن تستخدم شبكة LAN منزلية/خاصة، فيجب عليك تمكين الوصول إلى TLS.
دليل تكوين بنجيكورد
لتثبيت كل محتوى الخادم (jars، mods، plugins، configs، إلخ.) من ملف مضغوط أو 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}
، وهو أمر شائع في لغات البرمجة النصية لـ Shell.
باستخدام REPLACE_ENV_VARIABLE_PREFIX
يمكنك تحديد بادئة، حيث يكون الإعداد الافتراضي هو CFG_
، لمطابقة متغيرات البيئة المحددة مسبقًا فقط.
إذا كنت تريد استخدام ملف لقيمة (مثل عند استخدام أسرار Docker)، يمكنك إضافة لاحقة _FILE
إلى اسم المتغير الخاص بك (في أمر التشغيل). على سبيل المثال، سيتم استبدال ${CFG_PASSWORD_FILE}
بمحتويات الملف المحدد بواسطة متغير البيئة CFG_PASSWORD_FILE
.
فيما يلي مثال كامل حيث نريد استبدال القيم داخل database.yml
.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
مرفقة قابلة للكتابة بواسطة ذلك المعرف المستخدم، مثل:
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، الذراع64 |
java21 | 21 | AMD64، الذراع64 |
java17 | 17 | AMD64،arm64،armv7 |
java11 | 11 | AMD64،arm64،armv7 |
java8 | 8 | AMD64،arm64،armv7 |