[英]docker-compose: CMD variable substitution
我正在构建一个新的 Docker 映像,但我的带有变量替换的 CMD 命令不起作用。
我知道我需要像这样用-c
打开解释器:
CMD ["sh", "-c", "hello.sh $VARIABLE"]
但是我的用例不同,因为我需要使用sudo
执行某些操作:
CMD ["sudo", "-u", "oracle", "$ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh"]
这正常工作:
CMD $ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh
如何使它与sudo
?
是一样的,只是前面加了sudo
:
CMD ["sudo", "-u", "oracle", "sh", "-c", "hello.sh $VARIABLE"]
尝试:
CMD ["sudo", "-E", "-u", "oracle", "sh", "-c", "\"$ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh\""]
默认情况下sudo
启动一个新环境。 要让sudo
保留环境,您需要传递-E
选项。
然后要扩展$variables
,您需要在 shell 下运行它,以便它们可以扩展。 但是为了防止分词外壳扩展,我认为您必须引用变量扩展,因此附加\\"
。
也许这会更容易并且也有效:
CMD ["sh", "-c", "sudo -u oracle \"$ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh\""]
但在 docker 中,我认为最好只设置用户:
USER oracle
CMD $ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.