在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
这样就成功运行了