From 1f306a08b220c896b529f8686d5941e8dd57866b Mon Sep 17 00:00:00 2001 From: Kosta Kupresak Date: Sat, 14 Oct 2023 00:51:33 +0200 Subject: [PATCH] Add Umbraco Dockerfile and setup pipeline --- .env.default | 2 ++ .github/workflows/main.yaml | 14 ++++++++++ .gitignore | 1 + Hakaton.SlobodaNemaCenu/Dockerfile | 26 +++++++++++++++++++ .../Media/.gitignore | 1 + .../appsettings.json | 11 +++++++- docker-compose.production.yaml | 13 ++++++++++ docker-compose.yaml | 17 ++++++++++++ 8 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 Hakaton.SlobodaNemaCenu/Dockerfile create mode 100644 Hakaton.SlobodaNemaCenu/Hakaton.SlobodaNemaCenu.Web/Media/.gitignore diff --git a/.env.default b/.env.default index 7e27cb2..91082d0 100644 --- a/.env.default +++ b/.env.default @@ -1,2 +1,4 @@ DATABASE_PORT= DATABASE_PASSWORD= +UMBRACO_PORT= +CONNECTION_STRING= diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 6fec1a6..ddd4643 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -10,6 +10,15 @@ jobs: steps: - name: Checkout main uses: actions/checkout@main + - name: Building docker image + run: docker build ./Hakaton.SlobodaNemaCenu/ -t codeforacause/${{ secrets.UMBRACO_IMAGE_NAME }}:${{ github.run_number }} + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Pushing Docker image to Docker hub + run: docker push codeforacause/${{ secrets.UMBRACO_IMAGE_NAME }}:${{ github.run_number }} - name: Replace tokens uses: cschleiden/replace-tokens@v1.1 with: @@ -17,8 +26,13 @@ jobs: tokenSuffix: '}#' files: '["docker-compose.production.yaml"]' env: + TAG_NUMBER: "${{ github.run_number }}" DATABASE_PORT: "${{ secrets.DATABASE_PORT }}" DATABASE_PASSWORD: "${{ secrets.DATABASE_PASSWORD }}" + UMBRACO_IMAGE_NAME: "${{ secrets.UMBRACO_IMAGE_NAME }}" + UMBRACO_PORT: "${{ secrets.UMBRACO_PORT }}" + ASPNETCORE_ENVIRONMENT: "${{ secrets.ASPNETCORE_ENVIRONMENT }}" + CONNECTION_STRING: "${{ secrets.CONNECTION_STRING }}" - name: Copy docker compose file via SSH password uses: appleboy/scp-action@master with: diff --git a/.gitignore b/.gitignore index ea01b9d..0cfb663 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /Hakaton.SlobodaNemaCenu/.vs /Hakaton.SlobodaNemaCenu/Hakaton.SlobodaNemaCenu.Web/appsettings.Development.json **/.env +**/.idea/ diff --git a/Hakaton.SlobodaNemaCenu/Dockerfile b/Hakaton.SlobodaNemaCenu/Dockerfile new file mode 100644 index 0000000..b66b1d7 --- /dev/null +++ b/Hakaton.SlobodaNemaCenu/Dockerfile @@ -0,0 +1,26 @@ +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +WORKDIR /app + +ENV ASPNETCORE_URLS=http://*:5113 + + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src +COPY . . +RUN dotnet restore + +FROM build AS publish + +RUN dotnet build -c Release -o /app/build +RUN dotnet publish -c Release -o /app/publish + +RUN cp -R /src/Hakaton.SlobodaNemaCenu.Web/wwwroot/ /app/publish/ +RUN cp -R /src/Hakaton.SlobodaNemaCenu.Web/Views/ /app/publish/ +RUN cp -R /src/Hakaton.SlobodaNemaCenu.Web/Media/ /app/publish/ + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . + +EXPOSE 5113 +ENTRYPOINT ["dotnet", "Hakaton.SlobodaNemaCenu.Web.dll"] diff --git a/Hakaton.SlobodaNemaCenu/Hakaton.SlobodaNemaCenu.Web/Media/.gitignore b/Hakaton.SlobodaNemaCenu/Hakaton.SlobodaNemaCenu.Web/Media/.gitignore new file mode 100644 index 0000000..b04903b --- /dev/null +++ b/Hakaton.SlobodaNemaCenu/Hakaton.SlobodaNemaCenu.Web/Media/.gitignore @@ -0,0 +1 @@ +**/.DS_store diff --git a/Hakaton.SlobodaNemaCenu/Hakaton.SlobodaNemaCenu.Web/appsettings.json b/Hakaton.SlobodaNemaCenu/Hakaton.SlobodaNemaCenu.Web/appsettings.json index 0d4f5e9..e34b8b9 100644 --- a/Hakaton.SlobodaNemaCenu/Hakaton.SlobodaNemaCenu.Web/appsettings.json +++ b/Hakaton.SlobodaNemaCenu/Hakaton.SlobodaNemaCenu.Web/appsettings.json @@ -16,6 +16,12 @@ "Id": "ad6c5078-c629-41d6-93aa-e691f62ec530", "SanitizeTinyMce": true }, + "ModelsBuilder": { + "ModelsMode": "SourceCodeManual", + "ModelsDirectory": "Models/Generated", + "AcceptUnsafeModelsDirectory": true, + "ModelsNamespace": "Hakaton.SlobodaNemaCenu.Web.Models.Generated" + }, "Content": { "AllowEditInvariantFromNonDefault": true, "ContentVersionCleanupPolicy": { @@ -23,6 +29,9 @@ } } } + }, + "ConnectionStrings": { + "umbracoDbDSN": "Server=NSOBO1;Database=Hakaton.SlobodaNemaCenu;User Id=diplomat;Password=diplomat", + "umbracoDbDSN_ProviderName": "Microsoft.Data.SqlClient" } - } \ No newline at end of file diff --git a/docker-compose.production.yaml b/docker-compose.production.yaml index 7228c7b..a84c247 100644 --- a/docker-compose.production.yaml +++ b/docker-compose.production.yaml @@ -1,6 +1,19 @@ version: "3.9" services: + umbraco: + image: codeforacause/#{UMBRACO_IMAGE_NAME}#:#{TAG_NUMBER}# + container_name: "slobodanemacenu_umbraco" + ports: + - "#{UMBRACO_PORT}#:5113" + environment: + - ASPNETCORE_ENVIRONMENT=#{ASPNETCORE_ENVIRONMENT}# + - ConnectionStrings__umbracoDbDSN=#{CONNECTION_STRING}# + volumes: + - ./data/media/:/app/Media + - ./data/uploads/:/app/uploads + - ./data/wwwroot/uploads/:/app/wwwroot/uploads + restart: always database: image: mcr.microsoft.com/mssql/server:2022-latest container_name: "slobodanemacenu_database" diff --git a/docker-compose.yaml b/docker-compose.yaml index 6c70c02..803f292 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,6 +1,23 @@ version: "3.9" services: + umbraco: + container_name: "slobodanemacenu_umbraco" + build: + context: ./Hakaton.SlobodaNemaCenu + dockerfile: Dockerfile + ports: + - "${UMBRACO_PORT}:5113" + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ConnectionStrings__umbracoDbDSN=${CONNECTION_STRING} + volumes: + - ./data/media/:/app/Media + - ./data/uploads/:/app/uploads + - ./data/wwwroot/uploads/:/app/wwwroot/uploads + restart: always + env_file: + - .env database: image: mcr.microsoft.com/mssql/server:2022-latest container_name: "slobodanemacenu_database"