在 docker build 的时候如何设置环境变量
有时候,在构建应用 Docker image 的时候,需要用到一些敏感信息。例如某些第三方系统的登录信息。 而这类信息没法直接写在代码里。这时候需要通过 build argument 的方式把参数配置到 docker build 的过程中。
如下所示,在 Dockerfile 中,定义了 CREDENTIAL_ARG 参数。 然后把 CREDENTIAL_ARG 赋值给 CREDENTIAL。 后续的构建过程中,应用或者脚本就可以从环境变量中读取 CREDENTIAL 的值。
FROM node:latest as builder
ARG CREDENTIAL_ARG
ENV CREDENTIAL=$CREDENTIAL_ARG
RUN yarn build
FROM nginx:stable
EXPOSE 80
COPY /app/public /var/www
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
CMD ["nginx"]
然后,在 docker build 命令中,通过 --build-arg 参数把 CREDENTIAL_ARG 传进去。 而 CREDENTIAL_ARG 的值则从环境变量中获取。
docker build --build-arg CREDENTIAL_ARG="$USERNAME:$PASSWORD" .