Docker–first part–part 17

Trying to put the web into docker. In order to have easy builds for the developer , we copy the sln, then the csproj , then dotnet restore, then copy files. This way we get advantage of Docker caching.

Created dockerForWebAPI.txt

and run

docker build -f dockerForWebAPI.txt  -t infovalutar ..

Docker has not recursive copy – https://github.com/moby/moby/issues/15858

Solution: copy the .csproj one by one. ( other solution:  .tar file and copy the .csproj into tar, then use ADD command)

So copy the .sln with

COPY InfoValutar/*.sln ./

Then trying to copy files

Version 1

COPY  InfoValutar/InfoValutarDOS/InfoValutarDOS.csproj ./

( not good, same dir)

Version 2

COPY  InfoValutar/InfoValutarDOS/InfoValutarDOS.csproj ./app/InfoValutarDOS/InfoValutarDOS.csproj

(not good , discovered that creates another app folder – thanks for the docker run –rm -it infovalutar:latest /bin/bash )

Version 3

COPY  InfoValutar/InfoValutarDOS/InfoValutarDOS.csproj ./InfoValutarDOS/InfoValutarDOS.csproj

Good. Now copy files and build solution

And now it is the moment when echo and xcopy for plugins will bite me  – no xcopy on linux….

The only thing that I know to work in WIndows and Linux is … Powershell.

Any .NET Core 3 has this – run pwsh. It remains to install to my directory –  see https://andrewlock.net/new-in-net-core-3-local-tools/

The version of powershell on my PC differs from the version on Windows Container from GitHub actions.  Switch to Ubuntu.

Again – does not work . Try with pwsh –Command.

It does work on GitHub actions but NOT on my PC ( does not recognize command. ) . Thinking different pwsh version.

But on thing is the same  – running file.

Create a powershell file

Copy-Item -Path $args[0] -Destination $args[1] –Recurse

and running this file with

pwsh $(ProjectDir)pb.ps1 “$(TargetDir)”  “$(SolutionDir)plugins\$(ProjectName)”

( Do not forget to run first

dotnet tool restore

in the solution folder!)

Infovalutar

And one hour passes...
(This is the result of 1 hour per day auto-challenge as a full cycle developer for an exchange rates application)
( You can see the sources at https://github.com/ignatandrei/InfoValutar/ )