如何根据docker文档替换cdm: 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 run命令是:
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
答案 0 :(得分:7)
正确的做法是删除cmd [" ..."]
docker run --name test test/test-backend /srv/www/bin/gunicorn.sh
答案 1 :(得分:2)
Dockerfile
使用CMD
指令允许正在执行的容器的默认值。
以下行将执行脚本/srv/www/bin/gunicorn.sh
,因为它已在CMD
中的Dockerfile
指令中提供,作为默认值,在运行时内部执行/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
答案 2 :(得分:1)
对于使用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
并将应用程序构建到dist
。但是,对于原始问题,您可以在CLI中覆盖CMD。