gradle-docker icon indicating copy to clipboard operation
gradle-docker copied to clipboard

Document dockerPush task

Open jonesr91 opened this issue 8 years ago • 14 comments

I'd like to be able to use the dockerPush task to push an image that was built using the palantir docker task to a private repository (Sonatype Nexus 3).

From the docs, I can't work out how to use the dockerPush task for pushing to a private repository. Can you document how this task works, along with an example.

Thanks in advance.

jonesr91 avatar Oct 26 '16 08:10 jonesr91

All you need to do is set the remote repository in the image name. E.g., "my.private.host/foo/bar" .

On Wed, Oct 26, 2016 at 1:56 AM jonesr91 [email protected] wrote:

I'd like to be able to use the dockerPush task to push an image that was built using the palantir docker task to a private repository (Sonatype Nexus 3).

From the docs, I can't work out how to use the dockerPush task for pushing to a private repository. Can you document how this task works, along with an example.

Thanks in advance.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/palantir/gradle-docker/issues/74, or mute the thread https://github.com/notifications/unsubscribe-auth/AGOdwQfEtEmkNgwYG-MtTKsx3Qr43IEEks5q3xWmgaJpZM4Kg6nT .

uschi2000 avatar Oct 26 '16 15:10 uschi2000

How/where would I specify my login credentials?

jonesr91 avatar Oct 26 '16 16:10 jonesr91

typically you docker login <host>. This saves your credentials in ~/.docker/config.json or similar.

On Wed, Oct 26, 2016 at 9:15 AM jonesr91 [email protected] wrote:

How/where would I specify my login credentials?

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/palantir/gradle-docker/issues/74#issuecomment-256399454, or mute the thread https://github.com/notifications/unsubscribe-auth/AGOdwULDgv0QzkVY37k4CaA3VQXGg2bcks5q33xUgaJpZM4Kg6nT .

uschi2000 avatar Oct 26 '16 16:10 uschi2000

For my use case, I'd prefer to use the palantir plugin to do the login for me so that I'm not dependant on the login command having already been executed on against that docker installation.

On 26 Oct 2016, at 17:17, Robert Fink [email protected] wrote:

typically you docker login <host>. This saves your credentials in ~/.docker/config.json or similar.

On Wed, Oct 26, 2016 at 9:15 AM jonesr91 [email protected] wrote:

How/where would I specify my login credentials?

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/palantir/gradle-docker/issues/74#issuecomment-256399454, or mute the thread https://github.com/notifications/unsubscribe-auth/AGOdwULDgv0QzkVY37k4CaA3VQXGg2bcks5q33xUgaJpZM4Kg6nT .

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

jonesr91 avatar Oct 27 '16 15:10 jonesr91

I'm using the plugin in my jenkinsfile, like others it would be great to have a mechanism for using the plugin to do the docker login to a private repo.

Thanks for the great plugin, very useful. Damian.

damianoneill avatar Jul 11 '17 21:07 damianoneill

the typical flow for this is to let the CI system (circle/jenkins/etc) inject credentials as environment variables. then it should be easy enough to run docker login $foo $bar as a setup step in the CI script. i don't think we need to make this plugin more complicated in order to support this flow.

uschi2000 avatar Jul 11 '17 23:07 uschi2000

The CI I'm working with isn't set up to do docker login on its own quite yet, currently working around this with e.g.

task dockerLogin {
	commandLine 'docker', 'login', '--username', "${DOCKER_USERNAME}", '--password', "${DOCKER_PASSWORD}", "${DOCKER_HOSTNAME}"
}

Note that this elicits WARNING! Using --password via the CLI is insecure. Use --password-stdin.

tobymurray avatar Jul 04 '19 19:07 tobymurray

@uschi2000 Providing a feature that many users need is exactly opposite of complicated.

asarkar avatar Jul 22 '20 05:07 asarkar

The Bmuschko Docker plugin can set the auth info in a Gradle file, why the Palantir Docker plugin can't do that? Please make us easier use this plugin please.

amendoza-navent avatar Feb 06 '21 04:02 amendoza-navent

@amendoza-navent I'm curious, if the Bmuschko Docker plugin can do what you want, why are you even looking at this plugin? I personally looked at both plugins and chose Bmuschko Docker plugin, even though it's no longer actively maintained.

asarkar avatar Feb 06 '21 04:02 asarkar

@amendoza-navent I'm curious, if the Bmuschko Docker plugin can do what you want, why are you even looking at this plugin? I personally looked at both plugins and chose Bmuschko Docker plugin, even though it's no longer actively maintained.

@asarkar I started using the Palantir plugin because there is many tutorials and video tutorials using this plugin in internet and now I was avoiding to change it.

amendoza-navent avatar Feb 08 '21 20:02 amendoza-navent

As a workaround (or actually: solution) you can use something like this:

task dockerLogin(type: Exec) {
    description = 'Logs in to Docker Registry'
    group = 'Docker'
    commandLine "docker"
    standardInput = new ByteArrayInputStream("inject-your-password-here-via-Gradle-methods".getBytes())
    args "login", "--username", "inject-your-username-here-via-Gradle-methods", "--password-stdin", "your.registry.example.com"
}

description & group are just for good measure, of course.

opajonk avatar May 21 '21 07:05 opajonk

WHAT, you can't use this grade plugin to reliably push a docker image to a remove repository, unless you are not using authentication??

What company or organization would allow you to do that exactly?

In my case:

  • we build you application from CI/CD Pipeline
  • we use Framework (spring/micronaut/quarkus) to build native-image or docker-images from a gradle
  • we never build / test / publish on the same stage of the pipeline.
  • our CI/CD runs on multiple remote agents.
  • we don't use custom docker image (gradle+docker) to build your application.
  • we don't share artifacts between stages of the pipeline (docker save image), immutability principle
  • we don't hard-code credentials or share them in a local docker config file (big-security concern), we generate access token for the duration of the pipeline and make then available via environment variables.

So all the suggestions above will not work in our case unless you are advising to go against best practices.

ade90036 avatar Jan 31 '22 10:01 ade90036

I use Harbor as a cloud registry, for both docker images and helm charts. For the helm plugin i can login, why not with this plugin? XD Personally, i like this plugin compared to bmushko because i can use a dockerfile instead of gradle dsl to build but, the login, is important.

For now, I'm using this. image

faireai-fmonorchio avatar Mar 01 '22 18:03 faireai-fmonorchio