将环境变量传递到在kubernetes中运行的docker中

时间:2018-08-02 15:26:31

标签: docker kubernetes

我现在有一个看起来像这样的dockerfile:

counts.saveAsTextFile("output")

和pod的配置如下:

FROM golang:1.8-alpine
COPY ./ /src
ENV GOOGLE_CLOUD_PROJECT = "snappy-premise-118915"
RUN apk add --no-cache git && \
    apk --no-cache --update add ca-certificates && \
    cd /src && \
    go get -t -v cloud.google.com/go/pubsub && \
    CGO_ENABLED=0 GOOS=linux go build main.go

# final stage
FROM alpine
ENV LATITUDE "-121.464"
ENV LONGITUDE "36.9397"
ENV SENSORID "sensor1234"
ENV ZIPCODE "95023"
ENV INTERVAL "3"
ENV GOOGLE_CLOUD_PROJECT "snappy-premise-118915"
ENV GOOGLE_APPLICATION_CREDENTIALS "/app/key.json"
ENV GRPC_GO_LOG_SEVERITY_LEVEL "INFO"
RUN apk --no-cache --update add ca-certificates
WORKDIR /app
COPY --from=0 /src/main /app/
COPY --from=0 /src/key.json /app/
ENTRYPOINT /app/main

我希望能够传递以下环境变量:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: sensorpub
spec:
  template:
    metadata:
      labels:
        app: sensorpub
    spec:
      volumes:
      - name: google-cloud-key
        secret:
          secretName: pubsub-key
      containers:
      - name: sensorgen
        image: gcr.io/snappy-premise-118915/sensorgen:v1
        volumeMounts:
        - name: google-cloud-key
          mountPath: /var/secrets/google
        env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /var/secrets/google/key.json

我希望能够在pod配置中设置环境变量,以便docker文件可以使用这些变量...我该怎么做,而不是直接将它们直接编码到docker映像中?

1 个答案:

答案 0 :(得分:1)

  

我希望能够在pod配置中设置环境变量,以便docker文件可以使用这些变量...我该怎么做,而不是直接将它们直接编码到docker映像中?

无需在Dockerfile中指定任何 ENV指令;这些指令仅在运行时未提供默认值的情况下(如您的示例PodSpec)提供默认值。

“方法”将完全按照您在示例PodSpec中所做的操作:用您希望在Pod中显示的环境变量填充env:数组