Docker 如何在基于Alpine的图像上使用CMD中的ENV变量?
我尝试了几种不同的方法来获取Docker 如何在基于Alpine的图像上使用CMD中的ENV变量?,docker,dockerfile,Docker,Dockerfile,我尝试了几种不同的方法来获取CMD语句中的WORKERS变量,但它们似乎都不起作用。基于Alpine的容器在语法和用法上似乎也非常挑剔。任何帮助都将不胜感激 Dockerfile ENV WORKERS=2 EXPOSE 5000 CMD ["/usr/local/bin/gunicorn", "-b 0.0.0.0:5000", "-w ${WORKERS}", "app:app"] 显然,Alpine不会从子shell运行应用程序,遵循此模式将允许它正常工作 ENV WORKERS=2
CMD
语句中的WORKERS
变量,但它们似乎都不起作用。基于Alpine的容器在语法和用法上似乎也非常挑剔。任何帮助都将不胜感激
Dockerfile
ENV WORKERS=2
EXPOSE 5000
CMD ["/usr/local/bin/gunicorn", "-b 0.0.0.0:5000", "-w ${WORKERS}", "app:app"]
显然,Alpine不会从子shell运行应用程序,遵循此模式将允许它正常工作
ENV WORKERS=2
ENV WORKER_TIMEOUT=60
EXPOSE 5000
CMD ["/bin/sh", "-c", "/usr/local/bin/gunicorn \
-b 0.0.0.0:5000 -w ${WORKERS} -t ${WORKER_TIMEOUT} app:app"]
这是默认的docker行为,不应该与alpine相关。我从来没有在命令之前显式使用过
/bin/sh-c
,但我通常使用基于Debian的图像。@atamanroman是正确的。如果使用字符串形式CMD
或ENTRYPOINT
,则不需要添加shell,因为docker会自动添加shell。因为您使用的是json数组表单,所以必须自己添加sh
。这与Nepin无关,但是环境变量不会计算。