Dockerfile文件CMD执行脚本Docker容器不退出

脚本

脚本来自于SpringBoot项目编写的启停脚本SpringBoot项目启动、停止脚本。

编写Dockerfile文件

FROM CentOSxxx:latest

COPY myproject /opt/myproject

RUN chmod 777 /opt/myproject /start.sh

EXPOSE 8080

WORKDIR /opt/myproject 

CMD ["bash","-c","./start.sh start && tail -f /dev/null"]

FROM CentOSxxx:latest
基础镜像,带有java环境

COPY myproject /opt/myproject
将项目拷贝到容器的myproject目录下,注意COPY将目标文件的内容拷贝,不包括目录,所以需要创建一个目录

RUN chmod 777 /opt/myproject/start.sh
搭建镜像时运行该指令,使目标文件权限被修改为777(可读可写可执行)

EXPOSE 8080
容器暴露8080端口

WORKDIR /opt/myproject
进入容器时,设置CMD指令的路径

CMD [“bash”,"-c","./start.sh start && tail -f /dev/null"]
容器被创建时,执行start.sh脚本,如果容器执行该脚本后容器退出,则可以加tail -f /dev/null

创建镜像

docker build -t myimage .

创建容器

docker run -itd --name mycontainer -p 8080:8080 myimage 

你可能感兴趣的:(docker,docker,java,linux,shell)