可以在Dockerfile中使用RUN指令将ARG和ENV变量写入文件,然后在启动容器时通过source命令或者bash选项附加该文件读取变量。
示例代码:
Dockerfile:
ARG USER=myuser
ENV WORKDIR=/home/myuser/workdir
RUN echo "export USER=${USER}" >> /etc/bash.bashrc \
&& echo "export WORKDIR=${WORKDIR}" >> /etc/bash.bashrc
COPY ./startup.sh /startup.sh
CMD ["/startup.sh"]
startup.sh:
#!/bin/bash
source /etc/bash.bashrc
echo "User is ${USER}"
cd ${WORKDIR}
在启动容器时,可以通过如下命令读取到ARG和ENV变量:
docker run --rm myimage
输出:
User is myuser