java - 构建 docker 镜像不会因为 minecraft 服务器继续运行而停止

标签 java docker minecraft

所以我这几天一直在努力学习docker,给自己定了第一个目标。 我想在 docker 容器中运行一个 spigot 服务器,然后在路上将其与 BungeeCord 网络结合起来。 我遇到了问题。 我的 dockerfile 运行没有问题,但是一旦它到达启动 minecraft 服务器的位置,图像就会停止构建。 我认为这是由于服务器继续运行并且没有返回代码 0 以显示 docker 继续运行。 我的想法错了吗?如果没有,我该如何解决这个问题?

这是我的 Dockerfile:

FROM ubuntu:14.04

RUN apt-get update
RUN apt-get install openjdk-7-jre icedtea-7-plugin -y
RUN apt-get install wget -y
RUN mkdir mc_server && cd mc_server/
RUN wget http://getspigot.org/spigot18/spigot_server.jar
RUN java -Xms1536m -Xmx1536m -Dcom.mojang.eula.agree=true -jar spigot_server.jar nogui

这样服务器启动但 docker 永远不会完成构建。 我希望我说清楚了我的问题。

您好, 乔尔

最佳答案

将最后的 RUN 替换为 CMD

RUN/ADD/.. 用于构建要在其中运行应用程序的静态容器环境。在运行实际应用程序之前发生的一切。

CMDENTRYPOINT 定义了当您docker run 容器时容器内应该发生的事情。这是程序的启动脚本/调用所在的位置。

Dockerfile 的结果类似于关闭但硬盘驱动器上安装了所有内容的计算机,包括自动启动应用程序的脚本。打开它,一切开始运行。

附言:https://hub.docker.com/search/?q=spigot&page=1&isAutomated=0&isOfficial=0&starCount=0&pullCount=0有几个现有的图像

关于java - 构建 docker 镜像不会因为 minecraft 服务器继续运行而停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34076930/

相关文章:

从 docker 容器到主机超时的 curl 请求

java - 获取一个新字符串,除非某个值等于 false java

java - 适用于不同屏幕尺寸的 Android 处理程序

java - 为什么我需要让用户订阅 Firebase 中的主题?

java - 序列化列表生成 "Item"个节点

python - 机器人已启动,但/start 命令没有执行任何操作

java - cronTrigger 的配置(使用 opensymphony quartz )

docker - 在/usr/local/bin/docker-compose上允许 'anyone'可执行权限?

java - Minecraft Forge 1.7.10 - 从 ID 中删除配方

java - 如何配置 slf4j(用于 JDA)与 log4j(用于 Minecraft Paper)一起使用?