我有一个使用自定义entrypoint.sh的dockerfile。在此文件中,我想使用从docker-compose传递到dockerfile的ARGS。
问题是我没有将变量的内容获取到dockerfile中,而只是获得了变量名称。
例如:
ARGS ENVIROMENT=production
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["${ENVIROMENT}"]
entrypoint.sh
#!/bin/sh
cd /var/www/html
composer update
echo $1;
回声$ 1显示“ $ {Enviroment}”而不是我期望的“生产”。
答案 0 :(得分:1)
哦!您已经对Docker提出了这个问题。
但是首先,让我在这里澄清一点:
<div layout="column">
<mat-form-field>
<label>Start Date/Time</label>
<input mdc-datetime-picker="" date="true" time="true" type="text"
placeholder="Date" max-date="dateTimeEnd" ng-model="dateTimeStart" class=" md-input"
readonly="readonly" id="input_0">
<div></div>
</mat-form-field>
</div>
而不是ARG
ARGS
允许您定义构建时变量。意味着此变量仅在执行ARG
命令时才有用。然后,您可以使用docker image build
覆盖它。例如:--build-arg
docker image build --build-arg ENVIROMENT=integration ...`
允许您定义可在运行时使用的环境变量。简单起见:
ENV
作为exec格式:sh -c
这是同时使用两种语法的Dockerfile(只需取消注释要使用的 CMD ):
CMD ["sh", "-c", "echo ${GREETINGS}"]
#or
CMD echo ${GREETINGS}
您可以找到有关这些问题的更多详细信息:
答案 1 :(得分:1)
我想完成马克·阿布恰克拉的回答。 仍然缺少的是如何使用ARG命令。
可能的解决方案可能是:
ARG ENVIRONMENT=production
ENV ENVIRONMENT=$ENVIRONMENT
CMD exec /var/www/html/entrypoint.sh $ENVIRONMENT
执行程序在那里确保您的入口点。sh是PID = 1的进程。