Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to copy azure pipeline artifacts to a docker image which is microsoft dotnetcore runtime image

I'm building an Azure DevOps pipeline for a dotnet core project. After the dotnet publish command executes the artifacts get saved in $(artifactStagingDirectory). How do I copy these artifacts from the staging directory to the docker image?

I am not building project in dockerfile. I am executing dotnet publish in pipeline.

I have tried to save artifacts to another folder by using:

dotnet publish --configuration $(BuildConfiguration) --output out
like image 537
Vaibhav Khalane Avatar asked Aug 21 '19 11:08

Vaibhav Khalane


1 Answers

Publishing to $(Build.ArtifactStagingDirectory) is fine. There are several ways to do it, so here's one:

  1. Add a Docker task after the publish, configured to "Build"
  2. Set the "Build Context" in the task to $(Build.ArtifactStagingDirectory). That's the root path Docker will use for commands like COPY in a Dockerfile.
  3. Commit a Dockerfile to your repo, and set the Dockerfile path in the task to match its location

Set up the Dockerfile like this (I'm assuming .NET Core 2.2 here):

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "myAppNameHere.dll"]

Because you've set the Docker Build Context to $(Build.ArtifactStagingDirectory), where your app has been published, the COPY command will use that as a "current working directory." The translation of the COPY is "copy everything in $(Build.ArtifactStagingDirectory) to the /app folder inside the container."

That'll get you a basic Docker container that simply contains your pre-built and published app files.

like image 130
Thomas F. Abraham Avatar answered Sep 28 '22 00:09

Thomas F. Abraham