如何覆盖docker运行行中的CMD命令
如何根据Docker文档replacecdm: https : //docs.docker.com/reference/builder/#cmd
您可以覆盖CMD命令
Dockerfile:
RUN chmod +x /srv/www/bin/* & chmod -R 755 /srv/www/app RUN pip3 install -r /srv/www/app/pip-requirements.txt EXPOSE 80 CMD ["/srv/www/bin/gunicorn.sh"]
docker运行命令是:
docker run --name test test/test-backend
我试过了
docker run --name test test --cmd ["/srv/www/bin/gunicorn.sh"] docker run --name test test cmd ["/srv/www/bin/gunicorn.sh"]
但控制台说这个错误:
System error: exec: "cmd": executable file not found in $PATH
正确的方法是删除cmd [“…”]
docker run --name test test/test-backend /srv/www/bin/gunicorn.sh
Dockerfile
使用CMD
指令,允许执行容器的默认值。
下面这行代码将执行脚本/srv/www/bin/gunicorn.sh
因为它已经在你的Dockerfile
中的CMD
指令中提供了默认值,这个默认值在/bin/sh -c /srv/www/bin/gunicorn.sh
在运行时。
docker run --name test test/test-backend
现在说,如果你想运行其他的东西,只需在docker run
结束时添加。 现在下面的行应该运行bash
。
docker run --name test test/test-backend /bin/bash
参考: Dockerfile最佳实践
对于那些使用docker-compose的人来说:
docker-compose run [your-service-name-here-from-docker-compose.yml] /srv/www/bin/gunicorn.sh
在我的情况下,我正在重复使用相同的docker服务来运行我的反应应用程序的开发和生产版本:
docker-compose run my-react-app npm run build
将运行我的webpack.config.production.js
并build立应用程序的dist
。 但是,对于原始问题,您可以在CLI中覆盖CMD。