在 Dockerfile 中我们可以通过设置 ENV 来进行环境变量的默认声明:

    1. FROM golang:alpine
    2. ENV \
    3. LISTEN_ADDR=:8080 \
    4. RABBITMQ_SERVER=amqp://username:password@0.0.0.0:5672
    5. WORKDIR /app
    6. COPY build/apiServer_linux apiServer
    7. EXPOSE 8080
    8. CMD ["./apiServer"]

    我们在启动容器时,可以通过以下参数来对 env 变量进行覆盖

    1. docker run -d -e LISTEN_ADDR=0.0.0.0:80 apiServer

    如果希望在构建镜像时注入,可以通过 ARG 来实现

    1. FROM golang:alpine
    2. ARG LISTEN_ADDR
    3. ARG RABBITMQ_SERVER
    4. ENV \
    5. LISTEN_ADDR=${LISTEN_ADDR:-default} \
    6. RABBITMQ_SERVER=${RABBITMQ_SERVER:-default}
    7. WORKDIR /app
    8. COPY build/apiServer_linux apiServer
    9. EXPOSE 8080
    10. CMD ["./apiServer"]

    只需要在 build 时同时提供 arg 参数

    1. docker build --build-arg LISTEN_ADDR=:8080