Skip to main content


Publish the application‚Äč

At this point, your Dagger pipeline has tested, built and delivered the application to your local host. But why not also publish a container image of the application to a registry?

Dagger SDKs have built-in support to publish container images. So, let's update the pipeline to copy the built React application into an NGINX web server container and deliver the result to a public registry. Depending on the SDK, you need either the publish() method (for Node.js and Python) or the Publish() method (for Go).

Run the pipeline by executing the command below from the application directory:

dagger run go run ci/main.go

This revised pipeline does everything described in the previous step, and then publishes the container to, an ephemeral Docker registry.

To prevent name collisions, the container image name is suffixed with a random number, and printed to the console, as in the example output below:

Published image to:

After Dagger resolves the pipeline, the newly-built container image will be available in the registry. Download and test it using the command below (update the container image name as per the output of the pipeline):

docker run -p 8080:80

Browse to host port 8080. Confirm that you see the React application's welcome page.


You may have noticed that the pipeline above is able to publish to the registry without requiring the user to enter any authentication credentials. This is only possible because the registry allows anonymous access. In reality, however, most popular registries require authentication before accepting images for publication.

Dagger SDKs rely on your existing Docker credentials for registry authentication. This means that you must either execute docker login on the Dagger host, or invoke the Container.withRegistryAuth() API method in your Dagger pipeline, before attempting to publish an image to that registry.