打好了一个nginx镜像front

此时想在docker 容器启动的时候同时运行docker 里面的某一个脚本

docker run -id --name front -p 80:80 -e target_host=https://xxx.xxxxx.com front /replace_host.sh 

一运行,发现容器立即退出,运行docker logs front 发现replace_host脚本运行了,就觉得很困惑

别慌

首先,我们先不带任何命令地启动镜像

docker run -id --name front -p 80:80 -e target_host=https://xxx.xxxxx.com front

容器是能够正常启动而且不会立刻退出的,但是没有执行我们想执行的脚本而已

接下来,对两次启动镜像后执行

docker ps -a --no-trunc

发现一个问题,两个脚本启动时的command是不一样的,

前者只有"/replace_host.sh"
而后者是 “/docker-entrypoint.sh nginx -g ‘daemon off;’”

所以我们可以大胆地猜测,
在我们指定了/replace_host.sh 就没有执行镜像默认的 “/docker-entrypoint.sh nginx -g ‘daemon off;’”

执行的命令改为

docker run -id --name front -p 80:80  front sh -c "/replace_host.sh &&/docker-entrypoint.sh nginx -g 'daemon off;'"

其实就是将直接运行这个镜像的默认命令拼接上我们希望执行的命令

完美解决

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐