# 使用OpenJDK作为基础镜像 FROM openjdk:21-jdk-slim # 更新包列表并安装 curl 和其他必要工具 RUN apt-get update && \ apt-get install -y curl # 创建缓存目录并设置权限 RUN mkdir -p /minecraft/cache && chmod -R 777 /minecraft/cache # 创建必要的目录并设置权限 RUN mkdir -p /minecraft/versions/1.21 && chmod -R 777 /minecraft/versions # 下载并安装 cloudflared RUN curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && \ dpkg -i cloudflared.deb # 设置工作目录 WORKDIR /minecraft # 复制 Paper jar 文件到工作目录并设置权限 COPY paper.jar /minecraft/paper.jar COPY 1.21.jar /minecraft/1.21.jar RUN chmod 777 /minecraft/paper.jar /minecraft/1.21.jar # 复制配置文件 COPY server.properties /minecraft/server.properties COPY eula.txt /minecraft/eula.txt # 创建 cloudflared 配置文件 COPY config.yml /etc/cloudflared/config.yml # 复制 cloudflared 凭证文件 COPY dfed0ead-79e1-41cf-82b8-88ca8148a577.json /root/.cloudflared/dfed0ead-79e1-41cf-82b8-88ca8148a577.json # 获取并输出公网 IP 到控制台 RUN curl ifconfig.me # 暴露 Minecraft 服务器默认端口 EXPOSE 25565 # 设置所有文件的权限 RUN chmod -R 777 /minecraft # 启动命令 CMD ["sh", "-c", "cloudflared tunnel --config /etc/cloudflared/config.yml run & java -Xms4G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=16M -jar 1.21.jar nogui"]