From 2264c27032106cf873d2ffd499388d8512cdadbd Mon Sep 17 00:00:00 2001 From: steinhelge Date: Mon, 24 Nov 2025 11:10:10 +0100 Subject: [PATCH] feat: add Dockerfiles for frontend and backend, and a Gitea workflow for building and pushing images. --- .gitea/workflows/build.yml | 66 ++++++++++++++++++++++++++++++ src/Hospitality.Backend/Dockerfile | 22 ++++++++++ src/hospitality-web/Dockerfile | 23 +++++++++++ 3 files changed, 111 insertions(+) create mode 100644 .gitea/workflows/build.yml create mode 100644 src/Hospitality.Backend/Dockerfile create mode 100644 src/hospitality-web/Dockerfile diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..218723e --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,66 @@ +name: Build & Push Hospitality + +on: + push: + branches: + - master + - dev + +env: + REGISTRY: gitea.theriise.net/steinhelge + +jobs: + build-and-push: + runs-on: self-hosted + + steps: + - name: Checkout + uses: actions/checkout@v4 + + # Finn ut hvilken tag vi skal bruke + - name: Set image tag + run: | + # Gitea prøver å være kompatibel med GitHub Actions + # Noen ganger er GITHUB_REF_NAME bare 'master', andre ganger 'refs/heads/master' + REF="${GITHUB_REF_NAME:-$GITHUB_REF}" + REF="${REF#refs/heads/}" + + if [ "$REF" = "master" ]; then + TAG="latest" + elif [ "$REF" = "dev" ]; then + TAG="dev" + else + # fallback: bruk branchnavnet som tag, men uten skråstreker + TAG="$(echo "$REF" | tr '/' '-')" + fi + + echo "Bygger hospitality med TAG=$TAG" + echo "TAG=$TAG" >> $GITHUB_ENV + + - name: Log in to Gitea Container Registry + run: | + echo "${{ secrets.REGISTRY_TOKEN }}" | docker login $REGISTRY -u steinhelge --password-stdin + + # ---------- Frontend ---------- + - name: Build Frontend (${{ env.TAG }}) + run: | + docker build \ + -t $REGISTRY/hospitality-frontend:${TAG} \ + -f src/hospitality-web/Dockerfile \ + src/hospitality-web + + - name: Push Frontend (${{ env.TAG }}) + run: | + docker push $REGISTRY/hospitality-frontend:${TAG} + + # ---------- Backend API ---------- + - name: Build API (${{ env.TAG }}) + run: | + docker build \ + -t $REGISTRY/hospitality-api:${TAG} \ + -f src/Hospitality.Backend/Dockerfile \ + src/Hospitality.Backend + + - name: Push API (${{ env.TAG }}) + run: | + docker push $REGISTRY/hospitality-api:${TAG} diff --git a/src/Hospitality.Backend/Dockerfile b/src/Hospitality.Backend/Dockerfile new file mode 100644 index 0000000..c96ef8c --- /dev/null +++ b/src/Hospitality.Backend/Dockerfile @@ -0,0 +1,22 @@ +# --- Build stage --- +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +WORKDIR /src + +# Kopier alt +COPY . . + +# Publiser i Release +RUN dotnet publish "Hospitality.Backend.csproj" -c Release -o /app/publish + +# --- Runtime stage --- +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS final +WORKDIR /app + +# Kopier publisert output +COPY --from=build /app/publish . + +# Appen lytter standard til ASPNETCORE_URLS +EXPOSE 8080 +ENV ASPNETCORE_URLS=http://0.0.0.0:8080 + +ENTRYPOINT ["dotnet", "Hospitality.Backend.dll"] diff --git a/src/hospitality-web/Dockerfile b/src/hospitality-web/Dockerfile new file mode 100644 index 0000000..8c88191 --- /dev/null +++ b/src/hospitality-web/Dockerfile @@ -0,0 +1,23 @@ +# --- Build stage --- +FROM node:22 AS build +WORKDIR /app + +# Installer dependencies +COPY package*.json ./ +RUN npm ci + +# Kopier resten av koden +COPY . . + +# Bygg for produksjon +RUN npm run build + +# --- Runtime stage --- +FROM nginx:alpine +WORKDIR /usr/share/nginx/html + +# Legg inn bygget frontend +COPY --from=build /app/dist . + +# Nginx server som statisk side +EXPOSE 80