From 36237874f74a704653a91a76e213c8d2ec471187 Mon Sep 17 00:00:00 2001 From: csimonis Date: Thu, 24 Apr 2025 14:23:17 +0200 Subject: [PATCH 1/3] feat(docker): add Docker configuration for frontend app --- frontend/.docker/Dockerfile | 23 ++++++++++++++++++++++ frontend/.docker/casino.conf | 19 ++++++++++++++++++ frontend/.docker/entrypoint.sh | 7 +++++++ frontend/.dockerignore | 15 +++++++++++++++ frontend/angular.json | 2 +- frontend/docker/docker-compose.yml | 31 ------------------------------ 6 files changed, 65 insertions(+), 32 deletions(-) create mode 100644 frontend/.docker/Dockerfile create mode 100644 frontend/.docker/casino.conf create mode 100755 frontend/.docker/entrypoint.sh create mode 100644 frontend/.dockerignore delete mode 100644 frontend/docker/docker-compose.yml diff --git a/frontend/.docker/Dockerfile b/frontend/.docker/Dockerfile new file mode 100644 index 0000000..494c91f --- /dev/null +++ b/frontend/.docker/Dockerfile @@ -0,0 +1,23 @@ +FROM oven/bun:debian AS build +WORKDIR /app + +RUN apt-get update -y && apt-get install nodejs -y + +ENV NODE_ENV=production + +COPY package.json bun.lock ./ +RUN bun install --frozen-lockfile + +COPY . . +RUN bun run build + +FROM nginx:alpine AS production + +RUN rm /etc/nginx/conf.d/default.conf +COPY .docker/casino.conf /etc/nginx/templates/nginx.conf.template +COPY .docker/entrypoint.sh /docker-entrypoint.d/40-custom-config-env.sh + +COPY --from=build /app/dist/casino /usr/share/nginx/html + +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/frontend/.docker/casino.conf b/frontend/.docker/casino.conf new file mode 100644 index 0000000..40b9613 --- /dev/null +++ b/frontend/.docker/casino.conf @@ -0,0 +1,19 @@ +server { + listen 80; + root /usr/share/nginx/html/browser; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + add_header Cache-Control "no-cache"; + } + + location /backend/ { + proxy_pass http://${BACKEND_HOST}:${BACKEND_PORT}/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + } +} diff --git a/frontend/.docker/entrypoint.sh b/frontend/.docker/entrypoint.sh new file mode 100755 index 0000000..3842b5a --- /dev/null +++ b/frontend/.docker/entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Default values if not provided +: ${BACKEND_HOST:=localhost} +: ${BACKEND_PORT:=8080} + +envsubst '$BACKEND_HOST $BACKEND_PORT' < /etc/nginx/templates/nginx.conf.template > /etc/nginx/conf.d/default.conf +exec nginx -g 'daemon off;' diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..4e10341 --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,15 @@ +node_modules +dist +.angular +.git +.github +.vscode +.idea +*.md +!README.md +.DS_Store +.env* +npm-debug.log* +yarn-debug.log* +yarn-error.log* +bun-debug.log* \ No newline at end of file diff --git a/frontend/angular.json b/frontend/angular.json index f7a1430..a9f9a84 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -13,7 +13,7 @@ "build": { "builder": "@angular-devkit/build-angular:application", "options": { - "outputPath": "dist/lf10-starter2024", + "outputPath": "dist/casino", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", diff --git a/frontend/docker/docker-compose.yml b/frontend/docker/docker-compose.yml deleted file mode 100644 index 2123d63..0000000 --- a/frontend/docker/docker-compose.yml +++ /dev/null @@ -1,31 +0,0 @@ -version: '3' - -volumes: - employee_postgres_data: - driver: local - -services: - postgres-employee: - container_name: postgres_employee - image: postgres:17.4 - volumes: - - employee_postgres_data:/var/lib/postgresql/data - environment: - POSTGRES_DB: employee_db - POSTGRES_USER: employee - POSTGRES_PASSWORD: secret - ports: - - "5432:5432" - - employee: - container_name: employee - image: berndheidemann/employee-management-service:1.1.3 - # image: berndheidemann/employee-management-service_without_keycloak:1.1 - environment: - spring.datasource.url: jdbc:postgresql://postgres-employee:5432/employee_db - spring.datasource.username: employee - spring.datasource.password: secret - ports: - - "8089:8089" - depends_on: - - postgres-employee From 40e1ae5f87e610975a1cff1c2b838b9e85ca437d Mon Sep 17 00:00:00 2001 From: csimonis Date: Thu, 24 Apr 2025 14:25:10 +0200 Subject: [PATCH 2/3] chore(workflow): rename build-image and add frontend build --- .gitea/workflows/release.yml | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index e38a5a7..1dc9476 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -31,10 +31,10 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} - build-image: + build-backend-image: needs: release runs-on: ubuntu-latest - name: Build Docker Image + name: Build Backend Image steps: - name: Checkout uses: actions/checkout@v4 @@ -61,3 +61,34 @@ jobs: tags: | git.kjan.de/szut/casino-backend:latest git.kjan.de/szut/casino-backend:${{ env.TAG }} + +build-frontend-image: + needs: release + runs-on: ubuntu-latest + name: Build Frontend Image + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Ensure full history is available + - name: Extract tag + run: | + TAG=$(git describe --tags --abbrev=0) + echo "TAG=$TAG" >> $GITHUB_ENV + - name: Checkout + uses: actions/checkout@v4 + - name: Login + uses: docker/login-action@v3 + with: + registry: git.kjan.de + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASS }} + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: frontend/ + file: frontend/.docker/Dockerfile + push: true + tags: | + git.kjan.de/szut/casino-frontend:latest + git.kjan.de/szut/casino-frontend:${{ env.TAG }} From 27473ef5b50d8aeb6407fd33a77b184b36281f2c Mon Sep 17 00:00:00 2001 From: csimonis Date: Thu, 24 Apr 2025 14:28:19 +0200 Subject: [PATCH 3/3] ci: update job name in release workflow configuration --- .gitea/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 1dc9476..7e76ef6 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -62,7 +62,7 @@ jobs: git.kjan.de/szut/casino-backend:latest git.kjan.de/szut/casino-backend:${{ env.TAG }} -build-frontend-image: + build-frontend-image: needs: release runs-on: ubuntu-latest name: Build Frontend Image