Dockerfile ENTRYPOINT 执行shell脚本后自动退出

在Dockerfile文件中,最后一步是在入口处启动服务或执行一些部署脚本,例如:

# 运行启动脚本
ENTRYPOINT ["/bin/bash","/home/deploy/run_admin_server.sh"]

脚本是这样写的:

rm -f /home/workspace/*.jar
cd /home/deploy
cp admin-manager.jar  /home/workspace/giraffe-manor-admin.jar
cd /home/workspace
nohup java -server -Xmx512m -jar giraffe-manor-admin.jar &

当build镜像成功之后,运行镜像时,给出了成功的提示,返回了一个成功的镜像id,但是在docker ps命令中却看不到运行的容器。确认脚本是没有问题的。

原因:
1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出
2、容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出

这个是 docker 的机制问题

所以将脚本中的启动java的命令修改为 非后台运行即可:

java -server -Xmx512m -jar giraffe-manor-admin.jar 

这样就成功运行了
Dockerfile ENTRYPOINT 执行shell脚本后自动退出_第1张图片

你可能感兴趣的:(运维系统,docker,dockerfile)