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!)

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/ )
NrPost 
1Start
2Reading NBR from internet
3Source control and build
4Badge and test
5CI and action
6Artifacts and dotnet try
7Docker with .NET Try
8ECB
9Intermezzo - Various implementations for programmers
10Intermezzo - similar code - options
11Plugin implementation
12GUI for console
13WebAPI
14Plugin in .NET Core 3
15Build and Versioning
16Add swagger
17Docker - first part
18Docker - second part
19Docker - build Azure
20Pipeline send to Docker Hub
21Play with Docker - online
22Run VSCode and Docker
23Deploy Azure
24VSCode see tests and powershell
25Code Coverage
26Database in Azure
27Sql In Memory or Azure
28Azure ConString, RSS
29Middleware for backward compatibility
30Identical Tables in EFCore
31Multiple Data in EFCore
32Dot net try again
33Start Azure Function
34Azure function - deploy
35Solving my problems
36IAsyncEnumerable transformed to IEnumerable and making Azure Functions works
37Azure functions - final
38Review of 37 hours
39Last Commit in AzureDevOps
40Create Angular WebSite
41Add static Angular to WebAPI .NET Core
42Docker for Angular
43Angular and CORS
44SSL , VSCode, Docker
45Routing in Angular
46RxJS for Routing
47RxJs Unsubscribe