m / Dockerfile
asfag654's picture
Update Dockerfile
1974ce3 verified
raw
history blame contribute delete
No virus
1.76 kB
# 使用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"]