跳转至

基于docker的快速开服image

适用于Minecraft 1.17及以上,1.20.5及以下。

可以通过更改基础镜像openjdk的版本来实现1.17以下或1.20.5及以上。

Dockerfile

# 基础镜像
FROM openjdk:17-jdk-slim
# 设置时区 上海
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
# 工作目录
WORKDIR /minecraft
# 复制文件
COPY ./startup.sh /minecraft/startup.sh
RUN chomod +x /minecraft/startup.sh

# 安装vim方便修改
RUN apt-get update && \
    apt-get install -y --no-install-recommends vim && \
    apt-get install -y --no-install-recommends curl && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# eula
RUN echo "eula=true" >> /minecraft/eula.txt
# 运行命令
CMD ["/minecraft/startup.sh"]

startup.sh

#!/bin/bash

set -e

# 默认值
CORE_URL="${CORE_URL:-}"
MIN_RAM="${MIN_RAM:-1G}"
MAX_RAM="${MAX_RAM:-2G}"
JAR_NAME="server.jar"
JVM_ARGS_FILE="jvm.args"

# 下载 server.jar(如果不存在)
if [ ! -f "$JAR_NAME" ]; then
    if [ -n "$CORE_URL" ]; then
        echo "Downloading Minecraft core from $CORE_URL..."
        curl -o "$JAR_NAME" -L "$CORE_URL"
    else
        echo "Error: server.jar not found and CORE_URL is not provided."
        exit 1
    fi
else
    echo "$JAR_NAME already exists, skipping download."
fi

# 写入 JVM 参数文件
echo "-Xms$MIN_RAM" > "$JVM_ARGS_FILE"
echo "-Xmx$MAX_RAM" >> "$JVM_ARGS_FILE"

# 启动 Minecraft 服务端
echo "Starting Minecraft server..."
exec java $(cat $JVM_ARGS_FILE) -jar "$JAR_NAME" --nogui

docker-compose.yml

services:
  minecraft:
    image: minecraft-easysetup
    container_name: minecraftserver
    environment:
      - CORE_URL=https://api.papermc.io/v2/projects/paper/versions/1.18.2/builds/388/downloads/paper-1.18.2-388.jar  # 替换为实际地址
      - MIN_RAM=1G
      - MAX_RAM=1G
    restart: unless-stopped
    volumes:
      - /opt/Minecraft/lobby/world:/minecraft/world
      - /opt/Minecraft/lobby/mods:/minecraft/mods
      - /opt/Minecraft/lobby/backups:/minecraft/backups
      - mcserver_1:/minecraft
    networks:
      - mcnet

# 记得创建网络:用于群组服务器
# docker network create mcnet
networks:
  mcnet:
    external: true

volumes:
  mcserver_1:

构建

docker build -t minecraft-easysetup .