所以我这几天一直在努力学习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
/.. 用于构建要在其中运行应用程序的静态容器环境。在运行实际应用程序之前发生的一切。
CMD
和 ENTRYPOINT
定义了当您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/