rameshthoomu
rameshthoomu

Reputation: 1274

Build and Publish docker images to Nexus3

New to nexus.. We are trying to automate build process (Build docker images and publish them to Nexus3 repository).. My requirement is, I have an image built using docker build -t <imagename>:<version> . now I want to publish this docker image to nexus repo using Jenkins.

I have a nexus repo and Jenkins Job is configured with docker-maven plugin also I have provided docker:push maven target.. Not sure how to push now? Do I need to use shell script with docker push <imagename>:<version> or what steps I have to mention in Jenkins CI job.

Please help me..

Upvotes: 3

Views: 4175

Answers (1)

Ondra Žižka
Ondra Žižka

Reputation: 46876

From the question it is not clear whether you have set up Nexus Docker Registry or Nexus Maven Repository. You wrote about "Nexus Repo", which implies Nexus Maven Repo.

If you mean Nexus Maven Repository...

Docker stores images into a Docker server. It connects to it using it's own protocol. Nexus is a different paradigm and not compatible as is.

Docker Maven Plugin's push goal pushes to a remote Docker repository, e.g. DockerHub, or GitLab. That is different from "deploying" Maven artifacts to Nexus.

Docker allows to get an image in a form of a .tar file using docker load. Maybe someone created some kind of "wagon", a thing that would to allow maven to "resolve" these files which you would declare as dependencies. But the whole idea is probably not really advisable following. As I said, Maven and Docker's approaches are different.

Edit: So it turns out that somebody did - and it was the creators of Nexus. As pointed out by @masseyb. But after quick reading, it turns out that it's just a normal Docker registry, just branded and and bundled with Nexus. I assume that the poster asked about how to use Nexus Maven repository to store Docker images.

If you have the Nexus Docker registry...

then you need to:

  • Set up D-M-P, using the credentials set up in Nexus.
    I think you can also docker login to that; before running Maven.
  • Set the repository ID as prefix in <name> of the <image>.
  • The push goal will then push to that repository.

This article about using multiple registries may come handy, too.

Upvotes: 2

Related Questions