IMLC.ME

在 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 --from=builder /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" .