diff --git a/README.md b/README.md
index 7b9e7f5b..ee086784 100644
--- a/README.md
+++ b/README.md
@@ -1818,6 +1818,18 @@ This will fetch an access token for this user to make authorized API requests us
If you use a tool such as Postman to test your API, the token can be fetched and stored within the tool itself and appended to all API calls. Check your tool documentation for instructions.
+### Run using Docker Compose
+
+You can run whole application using [docker compose](https://docs.docker.com/compose/) from root folder:
+```shell
+docker-compose up
+```
+
+It will create following services:
+- MS SQL Server Database
+- Database Migrator
+- Application
+
## 6. Contribution
This project is still under analysis and development. I assume its maintenance for a long time and I would appreciate your contribution to it. Please let me know by creating an Issue or Pull Request.
@@ -1839,6 +1851,7 @@ List of features/tasks/approaches to add:
| Continuous Integration | Completed | 2020-09-01 |
| StyleCop Static Code Analysis | Completed | 2020-09-05 |
| FrontEnd SPA application | Completed | 2020-11-08 |
+| Docker support | Completed | 2020-11-26 |
| Meeting comments feature | | |
| Notifications feature | | |
| Messages feature | | |
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 00000000..24b33815
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,40 @@
+version: '3.4'
+
+services:
+
+ backend:
+ container_name: mymeetings_backend
+ build:
+ context: ./src/
+ ports:
+ - "5000:80"
+ networks:
+ - starfish-crm-network
+ environment:
+ - Meetings_MeetingsConnectionString=Server=mymeetingsdb,1433;Database=MyMeetings;User=sa;Password=Test@12345
+ depends_on:
+ - migrator
+ restart: on-failure
+
+ mymeetingsdb:
+ build: ./src/Database/
+ ports:
+ - 1445:1433
+ networks:
+ - starfish-crm-network
+
+ migrator:
+ container_name: mymeetings_db_migrator
+ build:
+ context: ./src/Database/
+ dockerfile: Dockerfile_DatabaseMigrator
+ networks:
+ - starfish-crm-network
+ environment:
+ - ASPNETCORE_MyMeetings_IntegrationTests_ConnectionString=Server=mymeetingsdb,1433;Database=MyMeetings;User=sa;Password=Test@12345
+ command: ["./wait-for-it.sh", "mymeetingsdb:1433", "--timeout=60", "--", "/bin/bash", "/entrypoint_DatabaseMigrator.sh"]
+ restart: on-failure
+
+
+networks:
+ starfish-crm-network:
\ No newline at end of file
diff --git a/src/.dockerignore b/src/.dockerignore
new file mode 100644
index 00000000..3729ff0c
--- /dev/null
+++ b/src/.dockerignore
@@ -0,0 +1,25 @@
+**/.classpath
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md
\ No newline at end of file
diff --git a/src/API/CompanyName.MyMeetings.API/CompanyName.MyMeetings.API.csproj b/src/API/CompanyName.MyMeetings.API/CompanyName.MyMeetings.API.csproj
index d24591fa..81030ca9 100644
--- a/src/API/CompanyName.MyMeetings.API/CompanyName.MyMeetings.API.csproj
+++ b/src/API/CompanyName.MyMeetings.API/CompanyName.MyMeetings.API.csproj
@@ -4,13 +4,26 @@
netcoreapp3.1
InProcess
2b9855d3-f073-44d2-aa45-b15e896794b9
+ Linux
+ ..\..
+ Debug;Release;Production
- bin\Debug\netcoreapp2.2\CompanyName.MyMeetings.API\CompanyName.MyMeetings.API.xml
+ bin\Debug\netcoreapp3.1\CompanyName.MyMeetings.API\CompanyName.MyMeetings.API.xml
1701;1702;1591
+
+ bin\Production\netcoreapp3.1\CompanyName.MyMeetings.API\CompanyName.MyMeetings.API.xml
+ 1701;1702;1591
+
+
+
+ bin\Release\netcoreapp3.1\CompanyName.MyMeetings.API.xml
+ 1701;1702;1591
+
+
@@ -27,6 +40,7 @@
+
@@ -49,6 +63,9 @@
+
+ Always
+
Always
diff --git a/src/API/CompanyName.MyMeetings.API/Properties/launchSettings.json b/src/API/CompanyName.MyMeetings.API/Properties/launchSettings.json
index dee66be3..9bd9d198 100644
--- a/src/API/CompanyName.MyMeetings.API/Properties/launchSettings.json
+++ b/src/API/CompanyName.MyMeetings.API/Properties/launchSettings.json
@@ -1,13 +1,13 @@
-{
- "$schema": "http://json.schemastore.org/launchsettings.json",
+{
"iisSettings": {
- "windowsAuthentication": false,
- "anonymousAuthentication": true,
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:57869",
"sslPort": 44368
}
},
+ "$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
@@ -21,10 +21,18 @@
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
- "applicationUrl": "http://localhost:5000",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- }
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "Meetings_MeetingsConnectionString": "aaa"
+ },
+ "applicationUrl": "http://localhost:5000"
+ },
+ "Docker": {
+ "commandName": "Docker",
+ "launchBrowser": true,
+ "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values",
+ "publishAllPorts": true,
+ "useSSL": true
}
}
}
\ No newline at end of file
diff --git a/src/API/CompanyName.MyMeetings.API/Startup.cs b/src/API/CompanyName.MyMeetings.API/Startup.cs
index 317b41ca..55fe0ee4 100644
--- a/src/API/CompanyName.MyMeetings.API/Startup.cs
+++ b/src/API/CompanyName.MyMeetings.API/Startup.cs
@@ -48,8 +48,11 @@ public Startup(IWebHostEnvironment env)
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json")
.AddUserSecrets()
+ .AddEnvironmentVariables("Meetings_")
.Build();
+ _loggerForApi.Information("Connection string:" + _configuration[MeetingsConnectionString]);
+
AuthorizationChecker.CheckAllEndpoints();
}
diff --git a/src/API/CompanyName.MyMeetings.API/appsettings.Production.json b/src/API/CompanyName.MyMeetings.API/appsettings.Production.json
new file mode 100644
index 00000000..e203e940
--- /dev/null
+++ b/src/API/CompanyName.MyMeetings.API/appsettings.Production.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Debug",
+ "System": "Information",
+ "Microsoft": "Information"
+ }
+ }
+}
diff --git a/src/API/CompanyName.MyMeetings.API/entrypoint.sh b/src/API/CompanyName.MyMeetings.API/entrypoint.sh
new file mode 100644
index 00000000..3e70d539
--- /dev/null
+++ b/src/API/CompanyName.MyMeetings.API/entrypoint.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+sleep 30 ;
+
+dotnet CompanyName.MyMeetings.API.dll
\ No newline at end of file
diff --git a/src/BuildingBlocks/Application/CompanyName.MyMeetings.BuildingBlocks.Application.csproj b/src/BuildingBlocks/Application/CompanyName.MyMeetings.BuildingBlocks.Application.csproj
index f4e624c4..7f702e06 100644
--- a/src/BuildingBlocks/Application/CompanyName.MyMeetings.BuildingBlocks.Application.csproj
+++ b/src/BuildingBlocks/Application/CompanyName.MyMeetings.BuildingBlocks.Application.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/BuildingBlocks/Domain/CompanyName.MyMeetings.BuildingBlocks.Domain.csproj b/src/BuildingBlocks/Domain/CompanyName.MyMeetings.BuildingBlocks.Domain.csproj
index f094dd2b..ea1bbe8a 100644
--- a/src/BuildingBlocks/Domain/CompanyName.MyMeetings.BuildingBlocks.Domain.csproj
+++ b/src/BuildingBlocks/Domain/CompanyName.MyMeetings.BuildingBlocks.Domain.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/BuildingBlocks/EventBus/CompanyName.MyMeetings.BuildingBlocks.EventBus.csproj b/src/BuildingBlocks/EventBus/CompanyName.MyMeetings.BuildingBlocks.EventBus.csproj
index 3bc1dbf8..ea0359ee 100644
--- a/src/BuildingBlocks/EventBus/CompanyName.MyMeetings.BuildingBlocks.EventBus.csproj
+++ b/src/BuildingBlocks/EventBus/CompanyName.MyMeetings.BuildingBlocks.EventBus.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/BuildingBlocks/Infrastructure/CompanyName.MyMeetings.BuildingBlocks.Infrastructure.csproj b/src/BuildingBlocks/Infrastructure/CompanyName.MyMeetings.BuildingBlocks.Infrastructure.csproj
index de34746b..dd63076d 100644
--- a/src/BuildingBlocks/Infrastructure/CompanyName.MyMeetings.BuildingBlocks.Infrastructure.csproj
+++ b/src/BuildingBlocks/Infrastructure/CompanyName.MyMeetings.BuildingBlocks.Infrastructure.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/BuildingBlocks/Tests/Application.UnitTests/CompanyName.MyMeetings.BuildingBlocks.Application.UnitTests.csproj b/src/BuildingBlocks/Tests/Application.UnitTests/CompanyName.MyMeetings.BuildingBlocks.Application.UnitTests.csproj
index 49977798..c5ff9f3a 100644
--- a/src/BuildingBlocks/Tests/Application.UnitTests/CompanyName.MyMeetings.BuildingBlocks.Application.UnitTests.csproj
+++ b/src/BuildingBlocks/Tests/Application.UnitTests/CompanyName.MyMeetings.BuildingBlocks.Application.UnitTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/BuildingBlocks/Tests/IntegrationTests/CompanyName.MyMeetings.BuildingBlocks.IntegrationTests.csproj b/src/BuildingBlocks/Tests/IntegrationTests/CompanyName.MyMeetings.BuildingBlocks.IntegrationTests.csproj
index fc36df4e..5a31c55f 100644
--- a/src/BuildingBlocks/Tests/IntegrationTests/CompanyName.MyMeetings.BuildingBlocks.IntegrationTests.csproj
+++ b/src/BuildingBlocks/Tests/IntegrationTests/CompanyName.MyMeetings.BuildingBlocks.IntegrationTests.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/CompanyName.MyMeetings.sln b/src/CompanyName.MyMeetings.sln
index f9dc9209..976aed1b 100644
--- a/src/CompanyName.MyMeetings.sln
+++ b/src/CompanyName.MyMeetings.sln
@@ -122,163 +122,242 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Production|Any CPU = Production|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{49D08B64-AC8E-4607-820F-8A0B989CFD33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{49D08B64-AC8E-4607-820F-8A0B989CFD33}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {49D08B64-AC8E-4607-820F-8A0B989CFD33}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {49D08B64-AC8E-4607-820F-8A0B989CFD33}.Production|Any CPU.Build.0 = Production|Any CPU
{49D08B64-AC8E-4607-820F-8A0B989CFD33}.Release|Any CPU.ActiveCfg = Release|Any CPU
{49D08B64-AC8E-4607-820F-8A0B989CFD33}.Release|Any CPU.Build.0 = Release|Any CPU
{F34C6504-590B-480A-A239-F230CDFF8CED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F34C6504-590B-480A-A239-F230CDFF8CED}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F34C6504-590B-480A-A239-F230CDFF8CED}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {F34C6504-590B-480A-A239-F230CDFF8CED}.Production|Any CPU.Build.0 = Production|Any CPU
{F34C6504-590B-480A-A239-F230CDFF8CED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F34C6504-590B-480A-A239-F230CDFF8CED}.Release|Any CPU.Build.0 = Release|Any CPU
{5C2C1630-8A7A-451F-81A8-8547C939F5FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C2C1630-8A7A-451F-81A8-8547C939F5FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5C2C1630-8A7A-451F-81A8-8547C939F5FD}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {5C2C1630-8A7A-451F-81A8-8547C939F5FD}.Production|Any CPU.Build.0 = Production|Any CPU
{5C2C1630-8A7A-451F-81A8-8547C939F5FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C2C1630-8A7A-451F-81A8-8547C939F5FD}.Release|Any CPU.Build.0 = Release|Any CPU
{F71CFDA8-0770-4761-896A-FB0098113F87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F71CFDA8-0770-4761-896A-FB0098113F87}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F71CFDA8-0770-4761-896A-FB0098113F87}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {F71CFDA8-0770-4761-896A-FB0098113F87}.Production|Any CPU.Build.0 = Production|Any CPU
{F71CFDA8-0770-4761-896A-FB0098113F87}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F71CFDA8-0770-4761-896A-FB0098113F87}.Release|Any CPU.Build.0 = Release|Any CPU
{93F3D023-37BD-4C5C-9442-DE2631CD4954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{93F3D023-37BD-4C5C-9442-DE2631CD4954}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {93F3D023-37BD-4C5C-9442-DE2631CD4954}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {93F3D023-37BD-4C5C-9442-DE2631CD4954}.Production|Any CPU.Build.0 = Production|Any CPU
{93F3D023-37BD-4C5C-9442-DE2631CD4954}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93F3D023-37BD-4C5C-9442-DE2631CD4954}.Release|Any CPU.Build.0 = Release|Any CPU
{CA91F71E-8067-4E98-A4D4-E17F5880DE39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA91F71E-8067-4E98-A4D4-E17F5880DE39}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA91F71E-8067-4E98-A4D4-E17F5880DE39}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {CA91F71E-8067-4E98-A4D4-E17F5880DE39}.Production|Any CPU.Build.0 = Production|Any CPU
{CA91F71E-8067-4E98-A4D4-E17F5880DE39}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA91F71E-8067-4E98-A4D4-E17F5880DE39}.Release|Any CPU.Build.0 = Release|Any CPU
{2EEAFD26-A0A9-4F91-BEB7-B0F8ED85ACBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2EEAFD26-A0A9-4F91-BEB7-B0F8ED85ACBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2EEAFD26-A0A9-4F91-BEB7-B0F8ED85ACBA}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {2EEAFD26-A0A9-4F91-BEB7-B0F8ED85ACBA}.Production|Any CPU.Build.0 = Production|Any CPU
{2EEAFD26-A0A9-4F91-BEB7-B0F8ED85ACBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2EEAFD26-A0A9-4F91-BEB7-B0F8ED85ACBA}.Release|Any CPU.Build.0 = Release|Any CPU
{590517F8-686B-460A-97B3-0A09A8BA443C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{590517F8-686B-460A-97B3-0A09A8BA443C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {590517F8-686B-460A-97B3-0A09A8BA443C}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {590517F8-686B-460A-97B3-0A09A8BA443C}.Production|Any CPU.Build.0 = Production|Any CPU
{590517F8-686B-460A-97B3-0A09A8BA443C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{590517F8-686B-460A-97B3-0A09A8BA443C}.Release|Any CPU.Build.0 = Release|Any CPU
{6F039231-8745-4171-B5CA-8688E4683CFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6F039231-8745-4171-B5CA-8688E4683CFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6F039231-8745-4171-B5CA-8688E4683CFC}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {6F039231-8745-4171-B5CA-8688E4683CFC}.Production|Any CPU.Build.0 = Production|Any CPU
{6F039231-8745-4171-B5CA-8688E4683CFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6F039231-8745-4171-B5CA-8688E4683CFC}.Release|Any CPU.Build.0 = Release|Any CPU
{CD765A37-EB16-4E35-AA03-6E706D70E8A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CD765A37-EB16-4E35-AA03-6E706D70E8A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CD765A37-EB16-4E35-AA03-6E706D70E8A0}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {CD765A37-EB16-4E35-AA03-6E706D70E8A0}.Production|Any CPU.Build.0 = Production|Any CPU
{CD765A37-EB16-4E35-AA03-6E706D70E8A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CD765A37-EB16-4E35-AA03-6E706D70E8A0}.Release|Any CPU.Build.0 = Release|Any CPU
{5D177131-B35C-4BB9-B37E-99B7F6973E77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5D177131-B35C-4BB9-B37E-99B7F6973E77}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5D177131-B35C-4BB9-B37E-99B7F6973E77}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {5D177131-B35C-4BB9-B37E-99B7F6973E77}.Production|Any CPU.Build.0 = Production|Any CPU
{5D177131-B35C-4BB9-B37E-99B7F6973E77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D177131-B35C-4BB9-B37E-99B7F6973E77}.Release|Any CPU.Build.0 = Release|Any CPU
{3ED61776-83A0-426C-9B3A-3AB755DA01EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3ED61776-83A0-426C-9B3A-3AB755DA01EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3ED61776-83A0-426C-9B3A-3AB755DA01EF}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {3ED61776-83A0-426C-9B3A-3AB755DA01EF}.Production|Any CPU.Build.0 = Production|Any CPU
{3ED61776-83A0-426C-9B3A-3AB755DA01EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3ED61776-83A0-426C-9B3A-3AB755DA01EF}.Release|Any CPU.Build.0 = Release|Any CPU
{396817BD-94A7-4559-A7F1-2FAB8009BCF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{396817BD-94A7-4559-A7F1-2FAB8009BCF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {396817BD-94A7-4559-A7F1-2FAB8009BCF8}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {396817BD-94A7-4559-A7F1-2FAB8009BCF8}.Production|Any CPU.Build.0 = Production|Any CPU
{396817BD-94A7-4559-A7F1-2FAB8009BCF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{396817BD-94A7-4559-A7F1-2FAB8009BCF8}.Release|Any CPU.Build.0 = Release|Any CPU
{55E1C531-2B9B-49B1-BDFE-9DE322E7FE00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{55E1C531-2B9B-49B1-BDFE-9DE322E7FE00}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {55E1C531-2B9B-49B1-BDFE-9DE322E7FE00}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {55E1C531-2B9B-49B1-BDFE-9DE322E7FE00}.Production|Any CPU.Build.0 = Production|Any CPU
{55E1C531-2B9B-49B1-BDFE-9DE322E7FE00}.Release|Any CPU.ActiveCfg = Release|Any CPU
{55E1C531-2B9B-49B1-BDFE-9DE322E7FE00}.Release|Any CPU.Build.0 = Release|Any CPU
{F364B0C4-1882-46A1-9B08-22587BEF05A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F364B0C4-1882-46A1-9B08-22587BEF05A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F364B0C4-1882-46A1-9B08-22587BEF05A2}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {F364B0C4-1882-46A1-9B08-22587BEF05A2}.Production|Any CPU.Build.0 = Production|Any CPU
{F364B0C4-1882-46A1-9B08-22587BEF05A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F364B0C4-1882-46A1-9B08-22587BEF05A2}.Release|Any CPU.Build.0 = Release|Any CPU
{0C31EA31-6A10-47D0-82E5-6D224E1CE532}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C31EA31-6A10-47D0-82E5-6D224E1CE532}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0C31EA31-6A10-47D0-82E5-6D224E1CE532}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {0C31EA31-6A10-47D0-82E5-6D224E1CE532}.Production|Any CPU.Build.0 = Production|Any CPU
{0C31EA31-6A10-47D0-82E5-6D224E1CE532}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C31EA31-6A10-47D0-82E5-6D224E1CE532}.Release|Any CPU.Build.0 = Release|Any CPU
{6E013582-9E44-4D7E-8CFE-5F6FB6757B03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E013582-9E44-4D7E-8CFE-5F6FB6757B03}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6E013582-9E44-4D7E-8CFE-5F6FB6757B03}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {6E013582-9E44-4D7E-8CFE-5F6FB6757B03}.Production|Any CPU.Build.0 = Production|Any CPU
{6E013582-9E44-4D7E-8CFE-5F6FB6757B03}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E013582-9E44-4D7E-8CFE-5F6FB6757B03}.Release|Any CPU.Build.0 = Release|Any CPU
{C457929B-91BE-48CC-A714-217D9CABD3CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C457929B-91BE-48CC-A714-217D9CABD3CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C457929B-91BE-48CC-A714-217D9CABD3CC}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {C457929B-91BE-48CC-A714-217D9CABD3CC}.Production|Any CPU.Build.0 = Production|Any CPU
{C457929B-91BE-48CC-A714-217D9CABD3CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C457929B-91BE-48CC-A714-217D9CABD3CC}.Release|Any CPU.Build.0 = Release|Any CPU
{1F4EAF3D-F5B8-473B-871F-606191D4AB9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F4EAF3D-F5B8-473B-871F-606191D4AB9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1F4EAF3D-F5B8-473B-871F-606191D4AB9F}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {1F4EAF3D-F5B8-473B-871F-606191D4AB9F}.Production|Any CPU.Build.0 = Production|Any CPU
{1F4EAF3D-F5B8-473B-871F-606191D4AB9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F4EAF3D-F5B8-473B-871F-606191D4AB9F}.Release|Any CPU.Build.0 = Release|Any CPU
{8DF88C85-594D-45D7-B12E-6B641D497853}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8DF88C85-594D-45D7-B12E-6B641D497853}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8DF88C85-594D-45D7-B12E-6B641D497853}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {8DF88C85-594D-45D7-B12E-6B641D497853}.Production|Any CPU.Build.0 = Production|Any CPU
{8DF88C85-594D-45D7-B12E-6B641D497853}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8DF88C85-594D-45D7-B12E-6B641D497853}.Release|Any CPU.Build.0 = Release|Any CPU
{9EAA687B-951E-4D89-8857-99151FF1BCD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9EAA687B-951E-4D89-8857-99151FF1BCD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9EAA687B-951E-4D89-8857-99151FF1BCD7}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {9EAA687B-951E-4D89-8857-99151FF1BCD7}.Production|Any CPU.Build.0 = Production|Any CPU
{9EAA687B-951E-4D89-8857-99151FF1BCD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9EAA687B-951E-4D89-8857-99151FF1BCD7}.Release|Any CPU.Build.0 = Release|Any CPU
{43DBBB02-CA43-42AD-BE21-04AC867BA168}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{43DBBB02-CA43-42AD-BE21-04AC867BA168}.Debug|Any CPU.Build.0 = Debug|Any CPU
{43DBBB02-CA43-42AD-BE21-04AC867BA168}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {43DBBB02-CA43-42AD-BE21-04AC867BA168}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {43DBBB02-CA43-42AD-BE21-04AC867BA168}.Production|Any CPU.Deploy.0 = Production|Any CPU
{43DBBB02-CA43-42AD-BE21-04AC867BA168}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0BC12804-A858-427B-88E2-F9CDE9E97986}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0BC12804-A858-427B-88E2-F9CDE9E97986}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0BC12804-A858-427B-88E2-F9CDE9E97986}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {0BC12804-A858-427B-88E2-F9CDE9E97986}.Production|Any CPU.Build.0 = Production|Any CPU
{0BC12804-A858-427B-88E2-F9CDE9E97986}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0BC12804-A858-427B-88E2-F9CDE9E97986}.Release|Any CPU.Build.0 = Release|Any CPU
{602768DD-F063-469D-9CD3-95CB02F6E441}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{602768DD-F063-469D-9CD3-95CB02F6E441}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {602768DD-F063-469D-9CD3-95CB02F6E441}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {602768DD-F063-469D-9CD3-95CB02F6E441}.Production|Any CPU.Build.0 = Production|Any CPU
{602768DD-F063-469D-9CD3-95CB02F6E441}.Release|Any CPU.ActiveCfg = Release|Any CPU
{602768DD-F063-469D-9CD3-95CB02F6E441}.Release|Any CPU.Build.0 = Release|Any CPU
{AC73F391-BC1F-4B7F-AF49-BD87223E2BB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC73F391-BC1F-4B7F-AF49-BD87223E2BB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AC73F391-BC1F-4B7F-AF49-BD87223E2BB0}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {AC73F391-BC1F-4B7F-AF49-BD87223E2BB0}.Production|Any CPU.Build.0 = Production|Any CPU
{AC73F391-BC1F-4B7F-AF49-BD87223E2BB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC73F391-BC1F-4B7F-AF49-BD87223E2BB0}.Release|Any CPU.Build.0 = Release|Any CPU
{E13970C6-87EE-40B1-854A-3053C95BC4C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E13970C6-87EE-40B1-854A-3053C95BC4C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E13970C6-87EE-40B1-854A-3053C95BC4C9}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {E13970C6-87EE-40B1-854A-3053C95BC4C9}.Production|Any CPU.Build.0 = Production|Any CPU
{E13970C6-87EE-40B1-854A-3053C95BC4C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E13970C6-87EE-40B1-854A-3053C95BC4C9}.Release|Any CPU.Build.0 = Release|Any CPU
{88081DDB-2FBD-4F7D-830F-24F5F6B78294}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{88081DDB-2FBD-4F7D-830F-24F5F6B78294}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {88081DDB-2FBD-4F7D-830F-24F5F6B78294}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {88081DDB-2FBD-4F7D-830F-24F5F6B78294}.Production|Any CPU.Build.0 = Production|Any CPU
{88081DDB-2FBD-4F7D-830F-24F5F6B78294}.Release|Any CPU.ActiveCfg = Release|Any CPU
{88081DDB-2FBD-4F7D-830F-24F5F6B78294}.Release|Any CPU.Build.0 = Release|Any CPU
{F2B164AC-99AC-4906-A133-85D6BB8432B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2B164AC-99AC-4906-A133-85D6BB8432B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F2B164AC-99AC-4906-A133-85D6BB8432B4}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {F2B164AC-99AC-4906-A133-85D6BB8432B4}.Production|Any CPU.Build.0 = Production|Any CPU
{F2B164AC-99AC-4906-A133-85D6BB8432B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2B164AC-99AC-4906-A133-85D6BB8432B4}.Release|Any CPU.Build.0 = Release|Any CPU
{475AF987-1458-447E-8504-4F1040B56A2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{475AF987-1458-447E-8504-4F1040B56A2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {475AF987-1458-447E-8504-4F1040B56A2C}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {475AF987-1458-447E-8504-4F1040B56A2C}.Production|Any CPU.Build.0 = Production|Any CPU
{475AF987-1458-447E-8504-4F1040B56A2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{475AF987-1458-447E-8504-4F1040B56A2C}.Release|Any CPU.Build.0 = Release|Any CPU
{1885C71E-1624-4673-B0BC-BF4035CFFE72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1885C71E-1624-4673-B0BC-BF4035CFFE72}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1885C71E-1624-4673-B0BC-BF4035CFFE72}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {1885C71E-1624-4673-B0BC-BF4035CFFE72}.Production|Any CPU.Build.0 = Production|Any CPU
{1885C71E-1624-4673-B0BC-BF4035CFFE72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1885C71E-1624-4673-B0BC-BF4035CFFE72}.Release|Any CPU.Build.0 = Release|Any CPU
{F8EE61DA-0E8B-4074-A0AF-433244EC1FB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F8EE61DA-0E8B-4074-A0AF-433244EC1FB8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F8EE61DA-0E8B-4074-A0AF-433244EC1FB8}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {F8EE61DA-0E8B-4074-A0AF-433244EC1FB8}.Production|Any CPU.Build.0 = Production|Any CPU
{F8EE61DA-0E8B-4074-A0AF-433244EC1FB8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8EE61DA-0E8B-4074-A0AF-433244EC1FB8}.Release|Any CPU.Build.0 = Release|Any CPU
{396A6C3F-74BA-4D85-8BF3-1182F9DE9D95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{396A6C3F-74BA-4D85-8BF3-1182F9DE9D95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {396A6C3F-74BA-4D85-8BF3-1182F9DE9D95}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {396A6C3F-74BA-4D85-8BF3-1182F9DE9D95}.Production|Any CPU.Build.0 = Production|Any CPU
{396A6C3F-74BA-4D85-8BF3-1182F9DE9D95}.Release|Any CPU.ActiveCfg = Release|Any CPU
{396A6C3F-74BA-4D85-8BF3-1182F9DE9D95}.Release|Any CPU.Build.0 = Release|Any CPU
{B448FDC3-5F85-47EE-9F4A-2654E8CC67E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B448FDC3-5F85-47EE-9F4A-2654E8CC67E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B448FDC3-5F85-47EE-9F4A-2654E8CC67E1}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {B448FDC3-5F85-47EE-9F4A-2654E8CC67E1}.Production|Any CPU.Build.0 = Production|Any CPU
{B448FDC3-5F85-47EE-9F4A-2654E8CC67E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B448FDC3-5F85-47EE-9F4A-2654E8CC67E1}.Release|Any CPU.Build.0 = Release|Any CPU
{3D7FDF4A-6B8B-49CA-8E28-5B292DC0954F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3D7FDF4A-6B8B-49CA-8E28-5B292DC0954F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D7FDF4A-6B8B-49CA-8E28-5B292DC0954F}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {3D7FDF4A-6B8B-49CA-8E28-5B292DC0954F}.Production|Any CPU.Build.0 = Production|Any CPU
{3D7FDF4A-6B8B-49CA-8E28-5B292DC0954F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3D7FDF4A-6B8B-49CA-8E28-5B292DC0954F}.Release|Any CPU.Build.0 = Release|Any CPU
{586DB9FA-CBBF-4867-A57D-E2359925D09A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{586DB9FA-CBBF-4867-A57D-E2359925D09A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {586DB9FA-CBBF-4867-A57D-E2359925D09A}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {586DB9FA-CBBF-4867-A57D-E2359925D09A}.Production|Any CPU.Build.0 = Production|Any CPU
{586DB9FA-CBBF-4867-A57D-E2359925D09A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{586DB9FA-CBBF-4867-A57D-E2359925D09A}.Release|Any CPU.Build.0 = Release|Any CPU
{785E93F2-3415-4215-BD85-1CED429CF260}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{785E93F2-3415-4215-BD85-1CED429CF260}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {785E93F2-3415-4215-BD85-1CED429CF260}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {785E93F2-3415-4215-BD85-1CED429CF260}.Production|Any CPU.Build.0 = Production|Any CPU
{785E93F2-3415-4215-BD85-1CED429CF260}.Release|Any CPU.ActiveCfg = Release|Any CPU
{785E93F2-3415-4215-BD85-1CED429CF260}.Release|Any CPU.Build.0 = Release|Any CPU
{32915CF6-62D9-4121-8650-6279D5154B4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{32915CF6-62D9-4121-8650-6279D5154B4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {32915CF6-62D9-4121-8650-6279D5154B4B}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {32915CF6-62D9-4121-8650-6279D5154B4B}.Production|Any CPU.Build.0 = Production|Any CPU
{32915CF6-62D9-4121-8650-6279D5154B4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32915CF6-62D9-4121-8650-6279D5154B4B}.Release|Any CPU.Build.0 = Release|Any CPU
{8CCB9013-92CE-4A26-B649-0997F5444161}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CCB9013-92CE-4A26-B649-0997F5444161}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8CCB9013-92CE-4A26-B649-0997F5444161}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {8CCB9013-92CE-4A26-B649-0997F5444161}.Production|Any CPU.Build.0 = Production|Any CPU
{8CCB9013-92CE-4A26-B649-0997F5444161}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CCB9013-92CE-4A26-B649-0997F5444161}.Release|Any CPU.Build.0 = Release|Any CPU
{9189FC86-116F-49D4-900E-DEC434136C6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9189FC86-116F-49D4-900E-DEC434136C6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9189FC86-116F-49D4-900E-DEC434136C6D}.Production|Any CPU.ActiveCfg = Production|Any CPU
+ {9189FC86-116F-49D4-900E-DEC434136C6D}.Production|Any CPU.Build.0 = Production|Any CPU
{9189FC86-116F-49D4-900E-DEC434136C6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9189FC86-116F-49D4-900E-DEC434136C6D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
diff --git a/src/Database/.dockerignore b/src/Database/.dockerignore
new file mode 100644
index 00000000..3729ff0c
--- /dev/null
+++ b/src/Database/.dockerignore
@@ -0,0 +1,25 @@
+**/.classpath
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md
\ No newline at end of file
diff --git a/src/Database/CompanyName.MyMeetings.Database/CompanyName.MyMeetings.Database.sqlproj b/src/Database/CompanyName.MyMeetings.Database/CompanyName.MyMeetings.Database.sqlproj
index f032189c..4791239f 100644
--- a/src/Database/CompanyName.MyMeetings.Database/CompanyName.MyMeetings.Database.sqlproj
+++ b/src/Database/CompanyName.MyMeetings.Database/CompanyName.MyMeetings.Database.sqlproj
@@ -25,7 +25,6 @@
True
- bin\Release\
$(MSBuildProjectName).sql
False
pdbonly
@@ -53,6 +52,17 @@
True
11.0
+
+ bin\Release\
+ $(MSBuildProjectName).sql
+ False
+ pdbonly
+ true
+ false
+ true
+ prompt
+ 4
+
diff --git a/src/Database/DatabaseMigrator/.dockerignore b/src/Database/DatabaseMigrator/.dockerignore
new file mode 100644
index 00000000..3729ff0c
--- /dev/null
+++ b/src/Database/DatabaseMigrator/.dockerignore
@@ -0,0 +1,25 @@
+**/.classpath
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md
\ No newline at end of file
diff --git a/src/Database/DatabaseMigrator/DatabaseMigrator.csproj b/src/Database/DatabaseMigrator/DatabaseMigrator.csproj
index f4ed4d57..c5746d03 100644
--- a/src/Database/DatabaseMigrator/DatabaseMigrator.csproj
+++ b/src/Database/DatabaseMigrator/DatabaseMigrator.csproj
@@ -3,6 +3,7 @@
Exe
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Database/DatabaseMigrator/Program.cs b/src/Database/DatabaseMigrator/Program.cs
index 60e0dfcd..607aafb3 100644
--- a/src/Database/DatabaseMigrator/Program.cs
+++ b/src/Database/DatabaseMigrator/Program.cs
@@ -1,4 +1,5 @@
-using DbUp;
+using System.IO;
+using DbUp;
using DbUp.ScriptProviders;
using Serilog;
using Serilog.Formatting.Compact;
@@ -31,6 +32,13 @@ static int Main(string[] args)
var scriptsPath = args[1];
+ if (!Directory.Exists(scriptsPath))
+ {
+ logger.Information($"Directory {scriptsPath} does not exist");
+
+ return -1;
+ }
+
var serilogUpgradeLog = new SerilogUpgradeLog(logger);
var upgrader =
diff --git a/src/Database/Dockerfile b/src/Database/Dockerfile
new file mode 100644
index 00000000..3977fc60
--- /dev/null
+++ b/src/Database/Dockerfile
@@ -0,0 +1,11 @@
+FROM mcr.microsoft.com/mssql/server:2017-latest-ubuntu
+
+COPY ./CompanyName.MyMeetings.Database/Scripts/CreateDatabase_Linux.sql /scripts/
+
+ENV ACCEPT_EULA=Y
+ENV SA_PASSWORD=Test@12345
+ENV MSSQL_PID=Express
+ENV MSSQL_TCP_PORT=1433
+
+ADD entrypoint.sh /
+ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
\ No newline at end of file
diff --git a/src/Database/Dockerfile_DatabaseMigrator b/src/Database/Dockerfile_DatabaseMigrator
new file mode 100644
index 00000000..d58e44f8
--- /dev/null
+++ b/src/Database/Dockerfile_DatabaseMigrator
@@ -0,0 +1,32 @@
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
+WORKDIR /app
+
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
+WORKDIR /src
+
+COPY ["DatabaseMigrator/DatabaseMigrator.csproj", "DatabaseMigrator.csproj"]
+COPY ["DatabaseMigrator/DatabaseMigrator.csproj", "DatabaseMigrator.csproj"]
+
+RUN dotnet restore "DatabaseMigrator.csproj"
+
+COPY . .
+
+WORKDIR "/src"
+RUN dotnet build "DatabaseMigrator.csproj" -c Release -o /app/build
+
+FROM build AS publish
+RUN dotnet publish "DatabaseMigrator.csproj" -c Release -o /app/publish
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+
+ADD entrypoint_DatabaseMigrator.sh /
+ADD CompanyName.MyMeetings.Database/Scripts/Migrations /migrations/
+
+# Copy wait-for-it.sh into our image
+COPY wait-for-it.sh wait-for-it.sh
+# Make it executable, in Linux
+RUN chmod +x wait-for-it.sh
+
+#ENTRYPOINT ["/bin/bash", "/entrypoint_DatabaseMigrator.sh"]
diff --git a/src/Database/entrypoint.sh b/src/Database/entrypoint.sh
new file mode 100644
index 00000000..ba18e3ba
--- /dev/null
+++ b/src/Database/entrypoint.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+echo 'Starting sql server..' ;
+
+# Start SQL Server
+/opt/mssql/bin/sqlservr &
+
+echo 'SQL server started.';
+
+sleep 30 ;
+
+echo 'Create database..' ;
+
+# Create database
+/opt/mssql-tools/bin/sqlcmd -d master -i /scripts/CreateDatabase_Linux.sql -U sa -P Test@12345 ;
+
+echo 'Database created' ;
+
+tail -f /dev/null
\ No newline at end of file
diff --git a/src/Database/entrypoint_DatabaseMigrator.sh b/src/Database/entrypoint_DatabaseMigrator.sh
new file mode 100644
index 00000000..d47a32d2
--- /dev/null
+++ b/src/Database/entrypoint_DatabaseMigrator.sh
@@ -0,0 +1,6 @@
+# Wait 30 seconds after SQL Server is running for database creation.
+sleep 30;
+
+echo $ASPNETCORE_MyMeetings_IntegrationTests_ConnectionString
+
+dotnet DatabaseMigrator.dll $ASPNETCORE_MyMeetings_IntegrationTests_ConnectionString "/migrations"
\ No newline at end of file
diff --git a/src/Database/wait-for-it.sh b/src/Database/wait-for-it.sh
new file mode 100644
index 00000000..d990e0d3
--- /dev/null
+++ b/src/Database/wait-for-it.sh
@@ -0,0 +1,182 @@
+#!/usr/bin/env bash
+# Use this script to test if a given TCP host/port are available
+
+WAITFORIT_cmdname=${0##*/}
+
+echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
+
+usage()
+{
+ cat << USAGE >&2
+Usage:
+ $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
+ -h HOST | --host=HOST Host or IP under test
+ -p PORT | --port=PORT TCP port under test
+ Alternatively, you specify the host and port as host:port
+ -s | --strict Only execute subcommand if the test succeeds
+ -q | --quiet Don't output any status messages
+ -t TIMEOUT | --timeout=TIMEOUT
+ Timeout in seconds, zero for no timeout
+ -- COMMAND ARGS Execute command with args after the test finishes
+USAGE
+ exit 1
+}
+
+wait_for()
+{
+ if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
+ echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
+ else
+ echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
+ fi
+ WAITFORIT_start_ts=$(date +%s)
+ while :
+ do
+ if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
+ nc -z $WAITFORIT_HOST $WAITFORIT_PORT
+ WAITFORIT_result=$?
+ else
+ (echo -n > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
+ WAITFORIT_result=$?
+ fi
+ if [[ $WAITFORIT_result -eq 0 ]]; then
+ WAITFORIT_end_ts=$(date +%s)
+ echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
+ break
+ fi
+ sleep 1
+ done
+ return $WAITFORIT_result
+}
+
+wait_for_wrapper()
+{
+ # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
+ if [[ $WAITFORIT_QUIET -eq 1 ]]; then
+ timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
+ else
+ timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
+ fi
+ WAITFORIT_PID=$!
+ trap "kill -INT -$WAITFORIT_PID" INT
+ wait $WAITFORIT_PID
+ WAITFORIT_RESULT=$?
+ if [[ $WAITFORIT_RESULT -ne 0 ]]; then
+ echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
+ fi
+ return $WAITFORIT_RESULT
+}
+
+# process arguments
+while [[ $# -gt 0 ]]
+do
+ case "$1" in
+ *:* )
+ WAITFORIT_hostport=(${1//:/ })
+ WAITFORIT_HOST=${WAITFORIT_hostport[0]}
+ WAITFORIT_PORT=${WAITFORIT_hostport[1]}
+ shift 1
+ ;;
+ --child)
+ WAITFORIT_CHILD=1
+ shift 1
+ ;;
+ -q | --quiet)
+ WAITFORIT_QUIET=1
+ shift 1
+ ;;
+ -s | --strict)
+ WAITFORIT_STRICT=1
+ shift 1
+ ;;
+ -h)
+ WAITFORIT_HOST="$2"
+ if [[ $WAITFORIT_HOST == "" ]]; then break; fi
+ shift 2
+ ;;
+ --host=*)
+ WAITFORIT_HOST="${1#*=}"
+ shift 1
+ ;;
+ -p)
+ WAITFORIT_PORT="$2"
+ if [[ $WAITFORIT_PORT == "" ]]; then break; fi
+ shift 2
+ ;;
+ --port=*)
+ WAITFORIT_PORT="${1#*=}"
+ shift 1
+ ;;
+ -t)
+ WAITFORIT_TIMEOUT="$2"
+ if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
+ shift 2
+ ;;
+ --timeout=*)
+ WAITFORIT_TIMEOUT="${1#*=}"
+ shift 1
+ ;;
+ --)
+ shift
+ WAITFORIT_CLI=("$@")
+ break
+ ;;
+ --help)
+ usage
+ ;;
+ *)
+ echoerr "Unknown argument: $1"
+ usage
+ ;;
+ esac
+done
+
+if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
+ echoerr "Error: you need to provide a host and port to test."
+ usage
+fi
+
+WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15}
+WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
+WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
+WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}
+
+# Check to see if timeout is from busybox?
+WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
+WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
+
+WAITFORIT_BUSYTIMEFLAG=""
+if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
+ WAITFORIT_ISBUSY=1
+ # Check if busybox timeout uses -t flag
+ # (recent Alpine versions don't support -t anymore)
+ if timeout &>/dev/stdout | grep -q -e '-t '; then
+ WAITFORIT_BUSYTIMEFLAG="-t"
+ fi
+else
+ WAITFORIT_ISBUSY=0
+fi
+
+if [[ $WAITFORIT_CHILD -gt 0 ]]; then
+ wait_for
+ WAITFORIT_RESULT=$?
+ exit $WAITFORIT_RESULT
+else
+ if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
+ wait_for_wrapper
+ WAITFORIT_RESULT=$?
+ else
+ wait_for
+ WAITFORIT_RESULT=$?
+ fi
+fi
+
+if [[ $WAITFORIT_CLI != "" ]]; then
+ if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
+ echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
+ exit $WAITFORIT_RESULT
+ fi
+ exec "${WAITFORIT_CLI[@]}"
+else
+ exit $WAITFORIT_RESULT
+fi
diff --git a/src/Dockerfile b/src/Dockerfile
new file mode 100644
index 00000000..d27f133e
--- /dev/null
+++ b/src/Dockerfile
@@ -0,0 +1,45 @@
+#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
+
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
+WORKDIR /app
+EXPOSE 80
+EXPOSE 443
+
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
+WORKDIR /src
+COPY ["API/CompanyName.MyMeetings.API/CompanyName.MyMeetings.API.csproj", "API/CompanyName.MyMeetings.API/"]
+COPY ["Modules/UserAccess/Application/CompanyName.MyMeetings.Modules.UserAccess.Application.csproj", "Modules/UserAccess/Application/"]
+COPY ["Modules/UserAccess/IntegrationEvents/CompanyName.MyMeetings.Modules.UserAccess.IntegrationEvents.csproj", "Modules/UserAccess/IntegrationEvents/"]
+COPY ["BuildingBlocks/Infrastructure/CompanyName.MyMeetings.BuildingBlocks.Infrastructure.csproj", "BuildingBlocks/Infrastructure/"]
+COPY ["BuildingBlocks/Domain/CompanyName.MyMeetings.BuildingBlocks.Domain.csproj", "BuildingBlocks/Domain/"]
+COPY ["BuildingBlocks/Application/CompanyName.MyMeetings.BuildingBlocks.Application.csproj", "BuildingBlocks/Application/"]
+COPY ["Modules/UserAccess/Domain/CompanyName.MyMeetings.Modules.UserAccess.Domain.csproj", "Modules/UserAccess/Domain/"]
+COPY ["BuildingBlocks/EventBus/CompanyName.MyMeetings.BuildingBlocks.EventBus.csproj", "BuildingBlocks/EventBus/"]
+COPY ["Modules/Meetings/IntegrationEvents/CompanyName.MyMeetings.Modules.Meetings.IntegrationEvents.csproj", "Modules/Meetings/IntegrationEvents/"]
+COPY ["Modules/Meetings/Application/CompanyName.MyMeetings.Modules.Meetings.Application.csproj", "Modules/Meetings/Application/"]
+COPY ["Modules/Meetings/Domain/CompanyName.MyMeetings.Modules.Meetings.Domain.csproj", "Modules/Meetings/Domain/"]
+COPY ["Modules/Administration/IntegrationEvents/CompanyName.MyMeetings.Modules.Administration.IntegrationEvents.csproj", "Modules/Administration/IntegrationEvents/"]
+COPY ["Modules/Payments/IntegrationEvents/CompanyName.MyMeetings.Modules.Payments.IntegrationEvents.csproj", "Modules/Payments/IntegrationEvents/"]
+COPY ["Modules/UserAccess/Infrastructure/CompanyName.MyMeetings.Modules.UserAccess.Infrastructure.csproj", "Modules/UserAccess/Infrastructure/"]
+COPY ["Modules/Payments/Application/CompanyName.MyMeetings.Modules.Payments.Application.csproj", "Modules/Payments/Application/"]
+COPY ["Modules/Payments/Domain/CompanyName.MyMeetings.Modules.Payments.Domain.csproj", "Modules/Payments/Domain/"]
+COPY ["Modules/Meetings/Infrastructure/CompanyName.MyMeetings.Modules.Meetings.Infrastructure.csproj", "Modules/Meetings/Infrastructure/"]
+COPY ["Modules/Payments/Infrastructure/CompanyName.MyMeetings.Modules.Payments.Infrastructure.csproj", "Modules/Payments/Infrastructure/"]
+COPY ["Modules/Administration/Application/CompanyName.MyMeetings.Modules.Administration.Application.csproj", "Modules/Administration/Application/"]
+COPY ["Modules/Administration/Domain/CompanyName.MyMeetings.Modules.Administration.Domain.csproj", "Modules/Administration/Domain/"]
+COPY ["Modules/Administration/Infrastructure/CompanyName.MyMeetings.Modules.Administration.Infrastructure.csproj", "Modules/Administration/Infrastructure/"]
+RUN dotnet restore "API/CompanyName.MyMeetings.API/CompanyName.MyMeetings.API.csproj"
+COPY . .
+WORKDIR "/src/API/CompanyName.MyMeetings.API"
+RUN dotnet build "CompanyName.MyMeetings.API.csproj" -c Release -o /app/build
+
+FROM build AS publish
+RUN dotnet publish "CompanyName.MyMeetings.API.csproj" -c Release -o /app/publish
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+
+ADD entrypoint.sh /
+
+ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
\ No newline at end of file
diff --git a/src/Modules/Administration/Application/CompanyName.MyMeetings.Modules.Administration.Application.csproj b/src/Modules/Administration/Application/CompanyName.MyMeetings.Modules.Administration.Application.csproj
index 8b8b5fce..581a0427 100644
--- a/src/Modules/Administration/Application/CompanyName.MyMeetings.Modules.Administration.Application.csproj
+++ b/src/Modules/Administration/Application/CompanyName.MyMeetings.Modules.Administration.Application.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Administration/Domain/CompanyName.MyMeetings.Modules.Administration.Domain.csproj b/src/Modules/Administration/Domain/CompanyName.MyMeetings.Modules.Administration.Domain.csproj
index 96414d8c..de8224dd 100644
--- a/src/Modules/Administration/Domain/CompanyName.MyMeetings.Modules.Administration.Domain.csproj
+++ b/src/Modules/Administration/Domain/CompanyName.MyMeetings.Modules.Administration.Domain.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Administration/Infrastructure/CompanyName.MyMeetings.Modules.Administration.Infrastructure.csproj b/src/Modules/Administration/Infrastructure/CompanyName.MyMeetings.Modules.Administration.Infrastructure.csproj
index 06c86993..30fb523d 100644
--- a/src/Modules/Administration/Infrastructure/CompanyName.MyMeetings.Modules.Administration.Infrastructure.csproj
+++ b/src/Modules/Administration/Infrastructure/CompanyName.MyMeetings.Modules.Administration.Infrastructure.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Administration/IntegrationEvents/CompanyName.MyMeetings.Modules.Administration.IntegrationEvents.csproj b/src/Modules/Administration/IntegrationEvents/CompanyName.MyMeetings.Modules.Administration.IntegrationEvents.csproj
index 88768bb2..eb2e53c0 100644
--- a/src/Modules/Administration/IntegrationEvents/CompanyName.MyMeetings.Modules.Administration.IntegrationEvents.csproj
+++ b/src/Modules/Administration/IntegrationEvents/CompanyName.MyMeetings.Modules.Administration.IntegrationEvents.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Administration/Tests/ArchTests/CompanyName.MyMeetings.Modules.Administration.ArchTests.csproj b/src/Modules/Administration/Tests/ArchTests/CompanyName.MyMeetings.Modules.Administration.ArchTests.csproj
index cc1de2b8..d5c4f341 100644
--- a/src/Modules/Administration/Tests/ArchTests/CompanyName.MyMeetings.Modules.Administration.ArchTests.csproj
+++ b/src/Modules/Administration/Tests/ArchTests/CompanyName.MyMeetings.Modules.Administration.ArchTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/Administration/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Administration.IntegrationTests.csproj b/src/Modules/Administration/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Administration.IntegrationTests.csproj
index 4c387bf8..58562284 100644
--- a/src/Modules/Administration/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Administration.IntegrationTests.csproj
+++ b/src/Modules/Administration/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Administration.IntegrationTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/Administration/Tests/UnitTests/CompanyName.MyMeetings.Modules.Administration.Domain.UnitTests.csproj b/src/Modules/Administration/Tests/UnitTests/CompanyName.MyMeetings.Modules.Administration.Domain.UnitTests.csproj
index e9e5593e..63c3e69a 100644
--- a/src/Modules/Administration/Tests/UnitTests/CompanyName.MyMeetings.Modules.Administration.Domain.UnitTests.csproj
+++ b/src/Modules/Administration/Tests/UnitTests/CompanyName.MyMeetings.Modules.Administration.Domain.UnitTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/Meetings/Application/CompanyName.MyMeetings.Modules.Meetings.Application.csproj b/src/Modules/Meetings/Application/CompanyName.MyMeetings.Modules.Meetings.Application.csproj
index b69ec42c..572606d6 100644
--- a/src/Modules/Meetings/Application/CompanyName.MyMeetings.Modules.Meetings.Application.csproj
+++ b/src/Modules/Meetings/Application/CompanyName.MyMeetings.Modules.Meetings.Application.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Meetings/Domain/CompanyName.MyMeetings.Modules.Meetings.Domain.csproj b/src/Modules/Meetings/Domain/CompanyName.MyMeetings.Modules.Meetings.Domain.csproj
index 44fae0ec..10821238 100644
--- a/src/Modules/Meetings/Domain/CompanyName.MyMeetings.Modules.Meetings.Domain.csproj
+++ b/src/Modules/Meetings/Domain/CompanyName.MyMeetings.Modules.Meetings.Domain.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Meetings/Infrastructure/CompanyName.MyMeetings.Modules.Meetings.Infrastructure.csproj b/src/Modules/Meetings/Infrastructure/CompanyName.MyMeetings.Modules.Meetings.Infrastructure.csproj
index 5b17f3fb..5c7c9efe 100644
--- a/src/Modules/Meetings/Infrastructure/CompanyName.MyMeetings.Modules.Meetings.Infrastructure.csproj
+++ b/src/Modules/Meetings/Infrastructure/CompanyName.MyMeetings.Modules.Meetings.Infrastructure.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Meetings/IntegrationEvents/CompanyName.MyMeetings.Modules.Meetings.IntegrationEvents.csproj b/src/Modules/Meetings/IntegrationEvents/CompanyName.MyMeetings.Modules.Meetings.IntegrationEvents.csproj
index 88768bb2..eb2e53c0 100644
--- a/src/Modules/Meetings/IntegrationEvents/CompanyName.MyMeetings.Modules.Meetings.IntegrationEvents.csproj
+++ b/src/Modules/Meetings/IntegrationEvents/CompanyName.MyMeetings.Modules.Meetings.IntegrationEvents.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Meetings/Tests/ArchTests/CompanyName.MyMeetings.Modules.Meetings.ArchTests.csproj b/src/Modules/Meetings/Tests/ArchTests/CompanyName.MyMeetings.Modules.Meetings.ArchTests.csproj
index 862a4ee8..ef7d0da8 100644
--- a/src/Modules/Meetings/Tests/ArchTests/CompanyName.MyMeetings.Modules.Meetings.ArchTests.csproj
+++ b/src/Modules/Meetings/Tests/ArchTests/CompanyName.MyMeetings.Modules.Meetings.ArchTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/Meetings/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Meetings.IntegrationTests.csproj b/src/Modules/Meetings/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Meetings.IntegrationTests.csproj
index c9b3e1f5..820ef005 100644
--- a/src/Modules/Meetings/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Meetings.IntegrationTests.csproj
+++ b/src/Modules/Meetings/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Meetings.IntegrationTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/Meetings/Tests/UnitTests/CompanyName.MyMeetings.Modules.Meetings.Domain.UnitTests.csproj b/src/Modules/Meetings/Tests/UnitTests/CompanyName.MyMeetings.Modules.Meetings.Domain.UnitTests.csproj
index 687dba30..f06e0fc1 100644
--- a/src/Modules/Meetings/Tests/UnitTests/CompanyName.MyMeetings.Modules.Meetings.Domain.UnitTests.csproj
+++ b/src/Modules/Meetings/Tests/UnitTests/CompanyName.MyMeetings.Modules.Meetings.Domain.UnitTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/Payments/Application/CompanyName.MyMeetings.Modules.Payments.Application.csproj b/src/Modules/Payments/Application/CompanyName.MyMeetings.Modules.Payments.Application.csproj
index be38c24c..9099bdfe 100644
--- a/src/Modules/Payments/Application/CompanyName.MyMeetings.Modules.Payments.Application.csproj
+++ b/src/Modules/Payments/Application/CompanyName.MyMeetings.Modules.Payments.Application.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Payments/Domain/CompanyName.MyMeetings.Modules.Payments.Domain.csproj b/src/Modules/Payments/Domain/CompanyName.MyMeetings.Modules.Payments.Domain.csproj
index 96414d8c..de8224dd 100644
--- a/src/Modules/Payments/Domain/CompanyName.MyMeetings.Modules.Payments.Domain.csproj
+++ b/src/Modules/Payments/Domain/CompanyName.MyMeetings.Modules.Payments.Domain.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Payments/Infrastructure/CompanyName.MyMeetings.Modules.Payments.Infrastructure.csproj b/src/Modules/Payments/Infrastructure/CompanyName.MyMeetings.Modules.Payments.Infrastructure.csproj
index 034cdd07..a8d2eeb9 100644
--- a/src/Modules/Payments/Infrastructure/CompanyName.MyMeetings.Modules.Payments.Infrastructure.csproj
+++ b/src/Modules/Payments/Infrastructure/CompanyName.MyMeetings.Modules.Payments.Infrastructure.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Payments/IntegrationEvents/CompanyName.MyMeetings.Modules.Payments.IntegrationEvents.csproj b/src/Modules/Payments/IntegrationEvents/CompanyName.MyMeetings.Modules.Payments.IntegrationEvents.csproj
index 88768bb2..eb2e53c0 100644
--- a/src/Modules/Payments/IntegrationEvents/CompanyName.MyMeetings.Modules.Payments.IntegrationEvents.csproj
+++ b/src/Modules/Payments/IntegrationEvents/CompanyName.MyMeetings.Modules.Payments.IntegrationEvents.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/Payments/Tests/ArchTests/CompanyName.MyMeetings.Modules.Payments.ArchTests.csproj b/src/Modules/Payments/Tests/ArchTests/CompanyName.MyMeetings.Modules.Payments.ArchTests.csproj
index d0e5777a..3cafdb84 100644
--- a/src/Modules/Payments/Tests/ArchTests/CompanyName.MyMeetings.Modules.Payments.ArchTests.csproj
+++ b/src/Modules/Payments/Tests/ArchTests/CompanyName.MyMeetings.Modules.Payments.ArchTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/Payments/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Payments.IntegrationTests.csproj b/src/Modules/Payments/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Payments.IntegrationTests.csproj
index d1b7d93d..e2cb7200 100644
--- a/src/Modules/Payments/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Payments.IntegrationTests.csproj
+++ b/src/Modules/Payments/Tests/IntegrationTests/CompanyName.MyMeetings.Modules.Payments.IntegrationTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/Payments/Tests/UnitTests/CompanyName.MyMeetings.Modules.Payments.Domain.UnitTests.csproj b/src/Modules/Payments/Tests/UnitTests/CompanyName.MyMeetings.Modules.Payments.Domain.UnitTests.csproj
index c31e67b8..e0e0d816 100644
--- a/src/Modules/Payments/Tests/UnitTests/CompanyName.MyMeetings.Modules.Payments.Domain.UnitTests.csproj
+++ b/src/Modules/Payments/Tests/UnitTests/CompanyName.MyMeetings.Modules.Payments.Domain.UnitTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/UserAccess/Application/CompanyName.MyMeetings.Modules.UserAccess.Application.csproj b/src/Modules/UserAccess/Application/CompanyName.MyMeetings.Modules.UserAccess.Application.csproj
index 7019dd69..72a9f95b 100644
--- a/src/Modules/UserAccess/Application/CompanyName.MyMeetings.Modules.UserAccess.Application.csproj
+++ b/src/Modules/UserAccess/Application/CompanyName.MyMeetings.Modules.UserAccess.Application.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/UserAccess/Domain/CompanyName.MyMeetings.Modules.UserAccess.Domain.csproj b/src/Modules/UserAccess/Domain/CompanyName.MyMeetings.Modules.UserAccess.Domain.csproj
index 96414d8c..de8224dd 100644
--- a/src/Modules/UserAccess/Domain/CompanyName.MyMeetings.Modules.UserAccess.Domain.csproj
+++ b/src/Modules/UserAccess/Domain/CompanyName.MyMeetings.Modules.UserAccess.Domain.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/UserAccess/Infrastructure/CompanyName.MyMeetings.Modules.UserAccess.Infrastructure.csproj b/src/Modules/UserAccess/Infrastructure/CompanyName.MyMeetings.Modules.UserAccess.Infrastructure.csproj
index 17448537..49ea8728 100644
--- a/src/Modules/UserAccess/Infrastructure/CompanyName.MyMeetings.Modules.UserAccess.Infrastructure.csproj
+++ b/src/Modules/UserAccess/Infrastructure/CompanyName.MyMeetings.Modules.UserAccess.Infrastructure.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/UserAccess/IntegrationEvents/CompanyName.MyMeetings.Modules.UserAccess.IntegrationEvents.csproj b/src/Modules/UserAccess/IntegrationEvents/CompanyName.MyMeetings.Modules.UserAccess.IntegrationEvents.csproj
index 88768bb2..eb2e53c0 100644
--- a/src/Modules/UserAccess/IntegrationEvents/CompanyName.MyMeetings.Modules.UserAccess.IntegrationEvents.csproj
+++ b/src/Modules/UserAccess/IntegrationEvents/CompanyName.MyMeetings.Modules.UserAccess.IntegrationEvents.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Modules/UserAccess/Tests/ArchTests/CompanyName.MyMeetings.Modules.UserAccess.ArchTests.csproj b/src/Modules/UserAccess/Tests/ArchTests/CompanyName.MyMeetings.Modules.UserAccess.ArchTests.csproj
index 8129b085..62a3a792 100644
--- a/src/Modules/UserAccess/Tests/ArchTests/CompanyName.MyMeetings.Modules.UserAccess.ArchTests.csproj
+++ b/src/Modules/UserAccess/Tests/ArchTests/CompanyName.MyMeetings.Modules.UserAccess.ArchTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/UserAccess/Tests/IntegrationTests/CompanyNames.MyMeetings.Modules.UserAccess.IntegrationTests.csproj b/src/Modules/UserAccess/Tests/IntegrationTests/CompanyNames.MyMeetings.Modules.UserAccess.IntegrationTests.csproj
index 8c772c2a..e6fc3342 100644
--- a/src/Modules/UserAccess/Tests/IntegrationTests/CompanyNames.MyMeetings.Modules.UserAccess.IntegrationTests.csproj
+++ b/src/Modules/UserAccess/Tests/IntegrationTests/CompanyNames.MyMeetings.Modules.UserAccess.IntegrationTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Modules/UserAccess/Tests/UnitTests/CompanyName.MyMeetings.Modules.UserAccess.Domain.UnitTests.csproj b/src/Modules/UserAccess/Tests/UnitTests/CompanyName.MyMeetings.Modules.UserAccess.Domain.UnitTests.csproj
index e7b45fe0..985fd87c 100644
--- a/src/Modules/UserAccess/Tests/UnitTests/CompanyName.MyMeetings.Modules.UserAccess.Domain.UnitTests.csproj
+++ b/src/Modules/UserAccess/Tests/UnitTests/CompanyName.MyMeetings.Modules.UserAccess.Domain.UnitTests.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+ Debug;Release;Production
diff --git a/src/Tests/ArchTests/CompanyName.MyMeetings.ArchTests.csproj b/src/Tests/ArchTests/CompanyName.MyMeetings.ArchTests.csproj
index 2a423299..32359eb2 100644
--- a/src/Tests/ArchTests/CompanyName.MyMeetings.ArchTests.csproj
+++ b/src/Tests/ArchTests/CompanyName.MyMeetings.ArchTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/Tests/IntegrationTests/CompanyName.MyMeetings.IntegrationTests.csproj b/src/Tests/IntegrationTests/CompanyName.MyMeetings.IntegrationTests.csproj
index db637392..72c4102f 100644
--- a/src/Tests/IntegrationTests/CompanyName.MyMeetings.IntegrationTests.csproj
+++ b/src/Tests/IntegrationTests/CompanyName.MyMeetings.IntegrationTests.csproj
@@ -4,6 +4,8 @@
netcoreapp3.1
false
+
+ Debug;Release;Production
diff --git a/src/entrypoint.sh b/src/entrypoint.sh
new file mode 100644
index 00000000..5ec0d71c
--- /dev/null
+++ b/src/entrypoint.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+echo "Waiting 60 seconds to start backend"
+
+sleep 60;
+
+echo "Backend starting..."
+
+dotnet CompanyName.MyMeetings.API.dll
\ No newline at end of file