在 Dockerfile 中我们可以通过设置 ENV 来进行环境变量的默认声明:
FROM golang:alpine
ENV \
LISTEN_ADDR=:8080 \
RABBITMQ_SERVER=amqp://username:password@0.0.0.0:5672
WORKDIR /app
COPY build/apiServer_linux apiServer
EXPOSE 8080
CMD ["./apiServer"]
我们在启动容器时,可以通过以下参数来对 env 变量进行覆盖
docker run -d -e LISTEN_ADDR=0.0.0.0:80 apiServer
如果希望在构建镜像时注入,可以通过 ARG 来实现
FROM golang:alpine
ARG LISTEN_ADDR
ARG RABBITMQ_SERVER
ENV \
LISTEN_ADDR=${LISTEN_ADDR:-default} \
RABBITMQ_SERVER=${RABBITMQ_SERVER:-default}
WORKDIR /app
COPY build/apiServer_linux apiServer
EXPOSE 8080
CMD ["./apiServer"]
只需要在 build 时同时提供 arg 参数
docker build --build-arg LISTEN_ADDR=:8080