With microservices based deployment, the first step is to dockerize your software. In our case, we want to create docker images for each of our microservices so that we can orchestrate them better. I have decided to use container registry provided by Google to build and upload the images.
The first thing we need to do is to create a dependency to spring-cloud-dependencies pom. Then we add a dependency to spring-cloud-config-server. Then we add a dockerfile-maven-plugin. Now we need to keep in mind that in the configuration for dockerfile-maven-plugin we need to provide the repository. If can see that our repository starts with gcr.io/. This makes sure that the image after creation is pushed to the container registry hosted by Google. If you want to have some other registry, you need to provide it in the form hostname:portnumber.
Now we can issue the following command the docker image would be build and pushed to google registry.
The first thing we need to do is to create a dependency to spring-cloud-dependencies pom. Then we add a dependency to spring-cloud-config-server. Then we add a dockerfile-maven-plugin. Now we need to keep in mind that in the configuration for dockerfile-maven-plugin we need to provide the repository. If can see that our repository starts with gcr.io/. This makes sure that the image after creation is pushed to the container registry hosted by Google. If you want to have some other registry, you need to provide it in the form hostname:portnumber.
Now we can issue the following command the docker image would be build and pushed to google registry.
$ mvn deploy -DskipTests [INFO] [INFO] --- dockerfile-maven-plugin:1.4.10:push (default) @ customer --- [INFO] Using Google application default credentials [INFO] loaded credentials for user account with clientId=764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com [INFO] The push refers to repository [gcr.io/myproject/rae/customer] [INFO] Image 967d96afcc46: Preparing [INFO] Image 36e051842720: Preparing [INFO] Image d1646aaa6540: Preparing [INFO] Image 19382582b926: Preparing [INFO] Image 41715d8d7d2b: Preparing [INFO] Image f3a38968d075: Preparing [INFO] Image a327787b3c73: Preparing [INFO] Image 5bb0785f2eee: Preparing [INFO] Image f3a38968d075: Waiting [INFO] Image a327787b3c73: Waiting [INFO] Image 5bb0785f2eee: Waiting [INFO] Image 36e051842720: Layer already exists [INFO] Image 41715d8d7d2b: Layer already exists [INFO] Image d1646aaa6540: Layer already exists [INFO] Image 19382582b926: Layer already exists [INFO] Image 967d96afcc46: Pushing [INFO] Image a327787b3c73: Layer already exists [INFO] Image 5bb0785f2eee: Layer already exists [INFO] Image f3a38968d075: Layer already exists [INFO] Image 967d96afcc46: Pushed [INFO] 0.0.1-SNAPSHOT: digest: sha256:f6bad4811f867dd75225797bee684ea43c0ddaf2b83de1b419a9f75e9a3941bc size: 2001 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 47.638 s [INFO] Finished at: 2019-03-10T19:58:27+05:30 [INFO] Final Memory: 55M/857M [INFO] ------------------------------------------------------------------------We can see below that the image is now pushed to google container registry.
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE gcr.io/myproject/rae/customer 0.0.1-SNAPSHOT a566e2f28705 19 seconds ago 518MB gcr.io/myproject/rae/customer8c61d1a5aef4 13 minutes ago 518MB