Sping Boot 原生镜像插件:mvn -Pnative spring-boot:build-image如何传递参数和环境变量?

ulydmbyx  于 2023-09-29  发布在  Spring
关注(0)|答案(1)|浏览(112)

Sping Boot 原生镜像插件:mvn -Pnative spring-boot:build-image如何传递参数和环境变量?
如果我使用Dockerfile,我可以配置arg和环境变量,如

FROM openjdk:17-jdk-slim-buster
RUN apt-get update -y
RUN apt-get install -y libfreetype6

ARG SPRING_DATASOURCE_URL
ENV SPRING_DATASOURCE_URL $SPRING_DATASOURCE_URL
EXPOSE ${SPRING_DATASOURCE_URL}

ARG SPRING_DATASOURCE_USERNAME
ENV SPRING_DATASOURCE_USERNAME $SPRING_DATASOURCE_USERNAME
EXPOSE ${SPRING_DATASOURCE_USERNAME}

ARG SPRING_DATASOURCE_PASSWORD
ENV SPRING_DATASOURCE_PASSWORD $SPRING_DATASOURCE_PASSWORD
EXPOSE ${SPRING_DATASOURCE_PASSWORD}

ARG SPRING_JPA_HIBERNATE_DDL_AUTO
ENV SPRING_JPA_HIBERNATE_DDL_AUTO $SPRING_JPA_HIBERNATE_DDL_AUTO
EXPOSE ${SPRING_JPA_HIBERNATE_DDL_AUTO}

COPY ./target/demo-0.0.1-SNAPSHOT.jar /opt/demo-0.0.1-SNAPSHOT.jar
ENV TZ=Asia/Ho_Chi_Minh
ENTRYPOINT ["java","-jar","/opt/demo-0.0.1-SNAPSHOT.jar"]

Sping Boot 原生镜像插件,我没有看到Dockerfile,如何设置ARG,env变量?

vktxenjb

vktxenjb1#

与使用spring-boot:build-image和Paketo buildpack时在Dockerfile中所做的等效操作是为Paketo项目中记录的Paketo环境变量buildpack设置运行时环境变量:

<project>
  <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <image>
                    <env> 
                        <BPE_SPRING_DATASOURCE_URL>
                            ${env.SPRING_DATASOURCE_URL}
                        </BPE_SPRING_DATASOURCE_URL>
                    </env>
                </image>
            </configuration>
        </plugin>
    </plugins>
</build>

但是,将用户名和密码等敏感值放在这样的图像中并不是一个好主意,因为任何可以下载该图像的人都可以看到环境变量的值。您应该考虑在运行映像时而不是在构建映像时设置这些值。
一种方法是使用Paketo文档中描述的绑定。一些绑定会被Spring Cloud Bindings库自动使用,Paketo buildpacks会自动添加到镜像中。Sping Boot configtree功能还可以用于在运行时读取映像中的绑定文件。

相关问题