이는 BungeeCord 및 Velocity와 같은 Minecraft 프록시를 선택할 수 있는 Docker 이미지입니다. 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
명령을 사용하여 컨테이너의 상태를 지속적으로 확인합니다. 이는 docker ps
의 STATUS
열에서 확인할 수 있습니다.
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
메모리 =512m
JVM에 지정할 Java 메모리 힙 크기입니다. 이를 빈 문자열로 설정하면 JVM이 컨테이너 선언 메모리 제한에서 힙 크기를 계산할 수 있습니다. JVM 기본값이 25%인 JVM_XX_OPTS
에 -XX:MaxRAMPercentage=
(
대체)을 추가하는 것을 고려하십시오.
상
이를 이미지 URL로 설정하면 아이콘이 다운로드되고 (필요한 경우) 64x64 PNG로 변환되어 /server/server-icon.png
에 배치됩니다.
OVERRIDE_ICON
ICON
이 설정된 경우 /server 디렉토리에 있는 기존 server-icon.png 파일을 재정의합니다.
INIT_MEMORY =${메모리}
다른 초기 힙 크기를 사용하도록 설정할 수 있습니다.
MAX_MEMORY =${MEMORY}
다른 최대 힙 크기를 사용하도록 설정할 수 있습니다.
JVM_OPTS / JVM_XX_OPTS
JVM에 전달할 추가 공백으로 구분된 옵션입니다. 여기서 JVM_XX_OPTS
JVM_OPTS
앞에 java 명령줄에 추가됩니다.
NETWORKADDRESS_CACHE_TTL =60
성공적인 네트워크 주소 조회를 캐시하는 데 걸리는 시간(초)입니다. Minecraft 서버 컨테이너가 다시 시작되거나 일정이 변경되고 새 컨테이너 IP 주소가 다시 할당될 때 더 낮은 값이 도움이 됩니다.
플러그인
쉼표로 구분된 *.jar URL 목록을 플러그인 폴더에 다운로드하는 데 사용됩니다.
-e PLUGINS=https://www.example.com/plugin1.jar,https://www.example.com/plugin2.jar
SPIGET_PLUGINS
SPIGET_PLUGINS
변수는 쉼표로 구분된 SpigotMC 리소스 ID 목록으로 설정되어 spiget API를 사용하여 SpigotMC 플러그인을 자동으로 다운로드할 수 있습니다. zip 파일인 리소스는 플러그인 디렉토리로 확장되고 단순히 jar 파일인 리소스는 그곳으로 이동됩니다.
참고: 변수의 철자는 의도적으로 "E"와 함께 SPIG E T로 표시됩니다.
리소스 ID는 단축 이름과 점 뒤의 URL 숫자 부분에서 찾을 수 있습니다. 예를 들어 ID는 313 from입니다.
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
모드린스_프로젝트
쉼표 또는 개행으로 구분된 프로젝트 슬러그(약칭) 또는 ID 목록입니다. 프로젝트 ID는 "기술 정보" 섹션에 있습니다. 슬러그는 /mod/
다음에 오는 페이지 URL의 일부입니다.
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
또한 프로젝트 슬러그 뒤에 콜론 기호와 버전 ID/유형을 사용하여 특정 버전/유형을 선언할 수 있습니다. 버전 ID는 '메타데이터' 섹션에서 확인할 수 있습니다. 유효한 버전 유형은 release
, beta
, alpha
입니다.
MODRINTH_DOWNLOAD_DEPENDENCIES
none
, optional
또는 required
(기본값)로 설정하여 종속성 해결을 조정할 수 있습니다.
참고 MINECRAFT_VERSION
변수는 해당 Minecraft 버전으로 설정되어야 합니다.
ENABLE_RCON
rcon 서버를 활성화합니다(타사 플러그인을 사용하여 작동).
BUNGEECORD
, WATERFALL
및 CUSTOM
용 orblazer/bungee-rconVELOCITY
용 TribuFuForks/VelocityRconRCON_PORT
rcon에 대한 포트 정의
RCON_PASSWORD
rcon의 비밀번호 정의
BUNGEE_JOB_ID =lastStableBuild
다운로드하여 실행할 아티팩트의 Jenkins 작업 ID이며 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
설정된 경우 BungeeCord.jar의 정규화된 사용자 정의 URL을 지정할 수 있습니다. 그러나 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 =거짓
Bungeecord의 proxy_protocol
옵션을 사용할 때 "true"로 설정하세요.
ENABLE_JMX =거짓
VisualVM 또는 JMC를 사용한 프로파일링과 같은 원격 JMX를 활성화하려면 환경 변수 ENABLE_JMX=true
를 추가하고, JMX_HOST
Docker 컨테이너를 실행하는 IP/호스트로 설정하고, TCP 포트 7091의 포트 전달을 추가하세요.
/섬기는 사람
BungeeCord가 시작되는 작업 디렉터리입니다. 이는 config.yml
이 로드될 디렉터리입니다.
/플러그인
플러그인은 서버가 시작되기 전에 이 디렉토리에서 복사됩니다.
/구성
이 디렉터리의 내용은 /server
디렉터리로 동기화됩니다. REPLACE_ENV_DURING_SYNC
"false"로 설정되지 않은 한 파일 내의 변수 자리 표시자는 아래 섹션에 설명된 대로 처리됩니다.
25577
일반적으로 다음을 사용하여 표준 Minecraft 서버 포트 25565에 매핑하려는 BungeeCord의 수신 대기 포트입니다.
-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
참고: rcon-cli를 대화식으로 사용하려면 -i
가 필요합니다.
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를 눌러 .
원격 액세스의 경우 tcp
소켓(예: -H tcp://0.0.0.0:2375
)을 사용하고 다른 시스템에서 연결하도록 Docker 데몬을 구성합니다.
docker -H $HOST:2375 attach mc
집/개인 LAN을 사용하지 않는 한 TLS 액세스를 활성화해야 합니다.
번지코드 구성 가이드
zip 또는 tgz 파일에서 모든 서버 콘텐츠(jar, mod, 플러그인, 구성 등)를 설치하려면 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_
인 접두사를 정의할 수 있습니다.
값에 대해 파일을 사용하려는 경우(예: Docker 비밀을 사용하는 경우) 변수 이름에 접미사 _FILE
추가할 수 있습니다(실행 명령에서). 예를 들어, ${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
필드에는 ${...}
변수 자리 표시자가 포함될 수 있습니다. 자리 표시자에 허용되는 환경 변수는 기본값이 "CFG_"인 REPLACE_ENV_VARIABLE_PREFIX
를 설정하여 제한할 수 있습니다.
다음 예에서는 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 "
}
}
]
}
]
}
지원되는 파일 형식:
이 이미지는 루트가 아닌 사용자로 실행될 수 있지만 다음과 같이 해당 uid로 쓸 수 있는 연결된 /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}
변종 | 자바 버전 | CPU 유형 |
---|---|---|
최신 | 21 | amd64,arm64 |
자바21 | 21 | amd64,arm64 |
자바17 | 17 | amd64,arm64,armv7 |
자바11 | 11 | amd64,arm64,armv7 |
자바8 | 8 | amd64,arm64,armv7 |