diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 1679101..dd4c1b4 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -7,12 +7,11 @@ on: - dev -env: - REGISTRY: gitea.theriise.net/steinhelge - jobs: build-and-push: runs-on: self-hosted + env: + REGISTRY: gitea.theriise.net/steinhelge steps: - name: Checkout @@ -46,9 +45,9 @@ jobs: - name: Build Frontend (${{ env.TAG }}) run: | if [ "$TAG" = "dev" ]; then - API_URL="http://t610:5005/api" + API_URL="https://hospitality-dev-api.theriise.net/api" else - API_URL="http://t610:5004/api" + API_URL="https://hospitality-api.theriise.net/api" fi docker build \ @@ -78,4 +77,20 @@ jobs: - name: Push API (${{ env.TAG }}) run: | docker push $REGISTRY/hospitality-api:${TAG} + + - name: Deploy containers + run: | + if [ "$TAG" = "dev" ]; then + echo "Deploying DEV til /srv/hospitality-dev" + cd /srv/hospitality-dev + docker compose -p hospitality-dev pull + docker compose -p hospitality-dev up -d + elif [ "$TAG" = "latest" ]; then + echo "Deploying PROD til /srv/hospitality-prod" + cd /srv/hospitality-prod + docker compose -p hospitality-prod pull + docker compose -p hospitality-prod up -d + else + echo "TAG=$TAG er ikke dev eller latest - skipper auto-deploy." + fi diff --git a/src/hospitality-web/Dockerfile b/src/hospitality-web/Dockerfile index 1b2b467..258f91e 100644 --- a/src/hospitality-web/Dockerfile +++ b/src/hospitality-web/Dockerfile @@ -22,5 +22,8 @@ WORKDIR /usr/share/nginx/html # Legg inn bygget frontend COPY --from=build /app/dist . +# Kopier custom nginx config for SPA routing +COPY nginx.conf /etc/nginx/conf.d/default.conf + # Nginx server som statisk side EXPOSE 80 diff --git a/src/hospitality-web/deploy/docker-compose.dev.yml b/src/hospitality-web/deploy/docker-compose.dev.yml index 1c9ba30..b34c4b8 100644 --- a/src/hospitality-web/deploy/docker-compose.dev.yml +++ b/src/hospitality-web/deploy/docker-compose.dev.yml @@ -4,6 +4,8 @@ networks: hospitality-dev-net: name: hospitality-dev-net driver: bridge + edge: + external: true services: db: @@ -30,8 +32,13 @@ services: - db networks: - hospitality-dev-net - # ports: - # - "5005:8080" + - edge + labels: + - "traefik.enable=true" + - "traefik.docker.network=edge" + - "traefik.http.routers.hospitality-dev-api.rule=Host(`hospitality-dev-api.theriise.net`)" + - "traefik.http.routers.hospitality-dev-api.entrypoints=websecure" + - "traefik.http.routers.hospitality-dev-api.tls=true" web: image: gitea.theriise.net/steinhelge/hospitality-frontend:dev @@ -41,18 +48,13 @@ services: - api networks: - hospitality-dev-net - ports: - - "8085:80" - # Eller via Traefik, samme mønster som over: - # networks: - # - hospitality-dev-net - # - edge - # labels: - # - "traefik.enable=true" - # - "traefik.docker.network=edge" - # - "traefik.http.routers.hospitality-dev.rule=Host(`hospitality-dev.theriise.net`)" - # - "traefik.http.routers.hospitality-dev.entrypoints=websecure" - # - "traefik.http.routers.hospitality-dev.tls=true" + - edge + labels: + - "traefik.enable=true" + - "traefik.docker.network=edge" + - "traefik.http.routers.hospitality-dev.rule=Host(`hospitality-dev.theriise.net`)" + - "traefik.http.routers.hospitality-dev.entrypoints=websecure" + - "traefik.http.routers.hospitality-dev.tls=true" volumes: hospitality-dev-db-data: diff --git a/src/hospitality-web/deploy/docker-compose.prod.yml b/src/hospitality-web/deploy/docker-compose.prod.yml index c88f4df..8bff0a0 100644 --- a/src/hospitality-web/deploy/docker-compose.prod.yml +++ b/src/hospitality-web/deploy/docker-compose.prod.yml @@ -4,6 +4,8 @@ networks: hospitality-net: name: hospitality-net driver: bridge + edge: + external: true services: db: @@ -31,9 +33,13 @@ services: - db networks: - hospitality-net - # Hvis du vil nå API direkte uten Traefik: - # ports: - # - "5004:8080" + - edge + labels: + - "traefik.enable=true" + - "traefik.docker.network=edge" + - "traefik.http.routers.hospitality-api.rule=Host(`hospitality-api.theriise.net`)" + - "traefik.http.routers.hospitality-api.entrypoints=websecure" + - "traefik.http.routers.hospitality-api.tls=true" web: image: gitea.theriise.net/steinhelge/hospitality-frontend:latest @@ -43,19 +49,13 @@ services: - api networks: - hospitality-net - # Ekstern tilgang (uten Traefik): - ports: - - "8084:80" - # Hvis du vil kjøre via Traefik i stedet: - # networks: - # - hospitality-net - # - edge - # labels: - # - "traefik.enable=true" - # - "traefik.docker.network=edge" - # - "traefik.http.routers.hospitality.rule=Host(`hospitality.theriise.net`)" - # - "traefik.http.routers.hospitality.entrypoints=websecure" - # - "traefik.http.routers.hospitality.tls=true" + - edge + labels: + - "traefik.enable=true" + - "traefik.docker.network=edge" + - "traefik.http.routers.hospitality.rule=Host(`hospitality.theriise.net`)" + - "traefik.http.routers.hospitality.entrypoints=websecure" + - "traefik.http.routers.hospitality.tls=true" volumes: hospitality-db-data: diff --git a/src/hospitality-web/nginx.conf b/src/hospitality-web/nginx.conf new file mode 100644 index 0000000..c810bd3 --- /dev/null +++ b/src/hospitality-web/nginx.conf @@ -0,0 +1,17 @@ +server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + index index.html; + + # Support for SPA routing + location / { + try_files $uri $uri/ /index.html; + } + + # Optional: Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { + expires 1y; + add_header Cache-Control "public, no-transform"; + } +}