【问题标题】:How to build an image using Configmap如何使用 Configmap 构建映像
【发布时间】:2021-01-14 18:06:14
【问题描述】:

我正在努力简化我们的部署过程。目前,我们为 Spring Boot 应用程序构建了一个 jar 文件,然后使用以下 DockerFile 构建一个镜像。

FROM [DTRServer]/java/javaimage_mmddyyyy:8
EXPOSE 8080
COPY /conf/myapp-conf.yaml /etc/k8t/myapp-conf.yaml
ADD target/myapp_mmddyyyy.jar myapp.jar
ENTRYPOINT ["java", "-jar", "myapp.jar", "--spring.config.location=/etc/k8t/myapp-conf.yaml"]

在我们的 k8t 中,我们创建了一个 Configmap(app-config)。所以我们的 deployment.yaml 就像

      containers:
        - image: [DTRServer]/projectname/myappimage:0.2.4-43
          imagePullPolicy: Always
          name: myapp
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: myapp-conf
              mountPath: /etc/k8t/
      volumes:
        - name: myapp-conf
          configMap:
            name: myapp-conf

为什么构建时需要在Dockerfile中指定spring.config.location?我们将使用 Configmap。所以我从 Dockerfile 和 deployment.yaml 中删除了配置文件信息。

FROM [DTRServer]/java/javaimage_mmddyyyy:8
EXPOSE 8080
ADD target/myapp_mmddyyyy.jar myapp.jar
ENTRYPOINT ["java", "-jar", "myapp.jar"]
      containers:
        - image: [DTRServer]/projectname/myappimage:0.2.4-43
          imagePullPolicy: Always
          name: myapp
          ports:
            - containerPort: 8080
      volumes:
        - name: myapp-conf
          configMap:
            name: myapp-conf

那么,pod 不喜欢它。它抱怨它找不到配置值。如何在没有配置信息的情况下构建镜像,并使用 Configmap 启动 pod?

【问题讨论】:

    标签: spring-boot dockerfile configmap


    【解决方案1】:

    Spring Boot 2.4 configuration tree support 可以与 Kubernetes ConfigMaps 一起使用。如果希望从挂载目录加载多个文件,以文件名为键,内容为值,则需要使用configtree: 前缀。 volumeMounts 部分仍需要出现在deployment.yml 中,以指定应将ConfigMap 数据挂载到何处。 deployment.yml 看起来像这样:

      containers:
        - image: [DTRServer]/projectname/myappimage:0.2.4-43
          imagePullPolicy: Always
          name: myapp
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: myapp-conf
              mountPath: /etc/k8t/
          env:
            - name: SPRING_CONFIG_IMPORT
              value: configtree:/etc/k8t/
      volumes:
        - name: myapp-conf
          configMap:
            name: myapp-conf
    

    【讨论】:

      猜你喜欢
      • 2018-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2010-10-14
      • 1970-01-01
      • 2022-01-24
      相关资源
      最近更新 更多