Create and Push Image in Azure Container registries


I am using Trial Version of Octopus (V2018.3.11) and trying to create docker image and want to push that image in my Azure Container registries.
I added Azure Container registries under external feeds.
I created .nupkg package(GEP.SMART.Invoice.Web.1.0.10.nupkg) and push the package in Built-in Package Repository.
I added step (Docker - Create and Push Image) but by default it looking for Docker hub credentials.
How can I pass my azure credential feeds?
In variable section also only Amazon Web Services Account coming not for Azure.

IN VSTS I am able to add Docker task to create and push image by adding Docker Registry Connection endpoint.
build . -f Dockerfile-Release -t$(Build.BuildNumber)

but for same task I am facing issue in octopus.
So please let me know best way to transform web.config and create image, push image in azure container and publish on Service fabric cluster.


Rajesh Ojha

Hi @rojha .
To answer your specific question regarding registry login, the library step that you appear to be using was contributed by one of our users and appears to currently not provide the ability to change the registry server. As a result so the underlying docker login command just defaults to using docker hub. I will look at updating this library script to allow passing a different value through. In the meantime you will probably need to either modify the step template in your installation or write a custom script so that you can specify the server. As noted you will need to explicitly provide the username and password as project variables since the feed credentials are not the same as the standard account credentials.

Part of the difficulties that may be encountered from this approach are because typically the image construction is recommended to take place during the build phase of your project and not the deployment. By trying to perform the web.config transform before building it sounds like you are attempting to make an image per environment. Is this correct? A common way of dealing with configuration within containers is to leverage environment variables that are passed in at run time. There are various mechanisms for managing environment variables in applications, for core or .netCore however this can be quite a change from how us .net developers are used to.

I would love to hear if environment variables would allow you to avoid having to rebuild your docker image and if not, what are the complications that would create. We are interested in providing as simple a solution as possible to this new approach that containers have encouraged.

I hope the above comments provide some guidance on how to best continue. I look forward to hearing your reply.