首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Spring Boot POM文件中删除私有docker注册表凭据

问从Spring Boot POM文件中删除私有docker注册表凭据
EN

Stack Overflow用户
提问于 2021-03-18 03:58:27
回答 2查看 185关注 0票数 1

我想用我的spring boot应用程序的CI/CD (Jenkins)创建docker镜像,并将镜像推送到私有的nexus注册表。如何避免将docker凭据添加到POM文件中并将其放入GIT中?我应该在哪里传递/放置凭据?

或者我应该使用docker login、docker push在jenkins中手动推送图像

我遵循了这个教程(https://docs.spring.io/spring-boot/docs/2.4.0/maven-plugin/reference/htmlsingle/#build-image-example-publish),我的POM看起来像这样:

代码语言:javascript
复制
<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <image>
                        <name>docker.example.com/library/${project.artifactId}</name>
                        <publish>true</publish>
                    </image>
                    <docker>
                        <publishRegistry>
                            <username>user</username>
                            <password>secret</password>
                            <url>https://docker.example.com/v1/</url>
                            <email>user@example.com</email>
                        </publishRegistry>
                    </docker>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-26 18:02:18

您可以在POM中使用变量,并在调用maven时传递它们。您应该将凭据存储在jenkins凭据管理器中。

例如:

代码语言:javascript
复制
...
<properties>
    <DOCKER_REGISTRY/>
    <DOCKER_REGISTRY_USER/>
    <DOCKER_REGISTRY_PASSWORD/>
    <DOCKER_IMAGE_NAME>${DOCKER_REGISTRY}/${project.artifactId}:${project.version}</DOCKER_IMAGE_NAME>
</properties>
...
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <image>
            <name>${DOCKER_IMAGE_NAME}</name>
            <publish>true</publish>
        </image>
        <docker>
            <publishRegistry>
                <username>${DOCKER_REGISTRY_USER}</username>
                <password>${DOCKER_REGISTRY_PASSWORD}</password>
                <url>${DOCKER_REGISTRY}</url>
            </publishRegistry>
        </docker>
    </configuration>
</plugin>
...

然后,您可以在jenkins管道中像这样调用maven:

代码语言:javascript
复制
stage('Build Docker Image') {
    steps {
        withCredentials([usernamePassword(credentialsId: 'YOUR_CREDENTIALS_ID', passwordVariable: 'NEXUS_PASSWORD', usernameVariable: 'NEXUS_USER')]) {
            sh "mvn -DskipTests=true spring-boot:build-image -DDOCKER_REGISTRY=SUBDOMAIN.DOMAIN.COM -DDOCKER_REGISTRY_USER=$NEXUS_USER -DDOCKER_REGISTRY_PASSWORD=$NEXUS_PASSWORD"
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2021-03-18 04:49:47

您可以使用Jenkins凭据管理器存储凭据,并通过-D参数在mvn build命令中设置它们

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66680371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档