打好了一个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;'"
其实就是将直接运行这个镜像的默认命令拼接上我们希望执行的命令
完美解决