docker工人容器不会在后台启动Java

docker必须在构build阶段启动java / undertow应用程序,并且在运行阶段应该可用。 然而,在启动java进程之后,与启动java服务器相关的容器更改不会保留。

因此,在此步骤中所做的更改不会影响图像。

在我的docker文件中的最后一个命令是

RUN java -jar /svc/app/svc-0.0.1-SNAPSHOT.jar $2>server.log & sleep 5 

当我运行这个容器,我可以看到输出存在于server.log文件确认服务器成功启动

 StartServices - Services Started 

但是当我运行容器时,没有服务正在运行。 我可以手动启动它,但这不是我想要做的。 容器启动时,我希望服务器启动。

注意

 & sleep 5 

如果我不等待这5秒钟,将不会创build任何日志。 Docker会立即放弃这个步骤,而不让我的Java应用程序启动。

然而,即使“睡眠5”让我的应用程序启动,docker工人仍然忽略了图像的变化,不适用。

所以当我做“docker运行”我的应用程序没有运行。

这里是Dockerfile:

 FROM anapsix/alpine-java ENV TC_BASE=/opt/tc_base ENV APP_BASE=$TC_BASE/svc ENV PATH=.:$PATH RUN apk update && apk add unzip COPY files/build/lib/svc/target/svc-0.0.1-SNAPSHOT-bin.zip $APP_BASE/ COPY files/build/lib/api/src/main/resources/api.properties $TC_BASE/conf/api/ COPY files/build/lib/svc/src/main/resources/svc.properties $TC_BASE/conf/svc/ COPY files/build/lib/svc/src/main/resources/logback.xml $TC_BASE/conf/svc/ RUN cd $APP_BASE ; unzip -q svc-0.0.1-SNAPSHOT-bin.zip ; rm svc-0.0.1-SNAPSHOT-bin.zip ; mv svc-0.0.1-SNAPSHOT/* . ; rm -rf svc-0.0.1-SNAPSHOT EXPOSE 7009 RUN java -jar $TC_BASE/svc/app/svc-0.0.1-SNAPSHOT.jar $2>server.log & sleep 5 

那么,它应该是入口点不运行。 入口点在容器启动时被调用,这是我所需要的。 RUN在构build时执行,但只影响文件系统。 Docker镜像不包含应用程序的执行状态,因此当创build镜像时,它没有关于已经启动的应用程序的信息。 为了启动应用程序,他们必须设置为进入点