programing

기본적으로 푸시하지 않고 jib-maven-plugin을 사용하여 도커 이미지를 구축하는 방법은 무엇입니까?

iphone6s 2023. 7. 16. 12:51
반응형

기본적으로 푸시하지 않고 jib-maven-plugin을 사용하여 도커 이미지를 구축하는 방법은 무엇입니까?

저는 간단한 SpringBoot 애플리케이션을 가지고 있으며 Jib Maven 플러그인을 사용하여 도커 이미지를 빌드하고 싶습니다.다음은 플러그인 구성입니다.

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.1.0</version>
    <configuration>
        <from>
            <image>openjdk:11-jdk-slim</image>
        </from>
        <to>
            <image>username/appname</image>
            <tags>
                <tag>latest</tag>
                <tag>${project.version}</tag>
            </tags>
        </to>
        <container>
            <mainClass>demo.Application</mainClass>
            <ports>
                <port>8080</port>
                <port>8787</port>
            </ports>
        </container>
    </configuration>
</plugin>

이미지를 로컬로 빌드하여 실행하고 싶습니다.저는 도커 레지스트리를 한 번에 구축하고 푸시하고 싶지 않습니다.

mvnjib:build 명령을 실행하면 Docker 구성(/Users/username/.docker/config.json)의 자격 증명을 사용하여 DockerHub에 자동으로 푸시됩니다.

이미지를 레지스트리에 푸시하는 다른 목표와 푸시를 비활성화할 수 있는 방법이 있습니까?

당신이 말한 이후로jib:dockerBuild옵션이 아닙니다. 가장 가까운 해결 방법은jib:buildTar목표는 지역 타르볼을 만듭니다.target/jib-image.tar(로 구성 가능한 경로)<outputPaths><tar>). 실행 중.jib:buildTar(또는 임의)jib:...처음으로 이미지를 구축하는 데 필요한 모든 것을 구축하고 캐시합니다.따라서, 후속jib:build도면층의 측면에서 런은 불가능합니다.원격 레지스트리에서 누락된 레이어만 전송하면 됩니다.

물론, 이 해결책의 한 가지 단점은 불필요한 타르볼을 생성한다는 것인데, 이 타르볼은 크기가 클 수 있습니다.


질문과 관계없이 설정할 필요가 없습니다.<tag>latest</tag>대상 이미지 참조 때문입니다.<image>username/appname<image>이미 암시하고 있는<image>username/appname:latest<image>.그<tags>추가 태그를 밀어넣는 구성입니다.<to><iamge>.

JIB 설명서 Jib Maven Plugin에서 다음을 실행할 수 있습니다.

mvn jib:dockerBuild

빌드 후 이미지를 도커 데몬에 푸시합니다.

wsl2와 함께 Mac 또는 Windows에서 포드맨을 사용하는 경우...포드맨 명령을 찾을 수 있는 경로 지정

mvn jib:dockerBuild -Djib.dockerClient.executable=$(which podman)

일반적으로 프로젝트 내에서 Docker 파일 대신 Jib를 사용하려는 두 가지 주요 이유가 있습니다.

  1. 빌드/CI 노드에서 실행되는 도커 데몬의 필요성을 방지합니다.
  2. Docker 파일 및/또는 Docker 모범 사례가 필요하지 않도록 합니다.

일반적으로 Jib 워크플로우는 빌드에서 컨테이너 레지스트리로 이동합니다.따라서 가장 간단한 옵션은 로컬 컨테이너 레지스트리를 설정하는 것입니다.

오픈 소스 도커 레지스트리나 하버 등을 사용해 볼 수 있습니다.

방금 확인해보니 지브에서 구축한 이미지는 현지에서 가능합니다.먼저 Docker 데몬이 로컬에서 실행되고 있는지 확인합니다.그런 다음 다음 다음과 같이 수행합니다.

    <to>
        <image><your-local-image-name></image>
    </to>

당신의 도커 데몬이 실행되고 있지 않거나 이미지 이름이 사용자 이름으로 시작되어 실제로 도커 허브에 이미지를 푸시하고 싶다고 지브가 생각하게 되었기 때문에 당신의 이미지가 작동하지 않았을 수도 있습니다.

언급URL : https://stackoverflow.com/questions/60862811/how-to-build-the-docker-image-using-jib-maven-plugin-but-not-push-by-default

반응형