Compare commits

...

8 Commits

Author SHA1 Message Date
steinhelge 58b5ff9852 Merge pull request 'dev' (#4) from dev into master
Build & Push Hospitality / build-and-push (push) Successful in 4m44s
Reviewed-on: #4
2025-11-26 08:58:24 +00:00
steinhelge 68ecdb0056 feat: Add Nginx configuration for SPA routing and static asset caching.
Build & Push Hospitality / build-and-push (push) Successful in 3m43s
2025-11-25 20:10:47 +01:00
steinhelge bde8e8bedc feat: Integrate Traefik for API and web routing with TLS, updating build workflow to use new HTTPS API endpoints.
Build & Push Hospitality / build-and-push (push) Successful in 3m41s
2025-11-25 20:00:54 +01:00
steinhelge 07af11b541 refactor: move REGISTRY environment variable to job scope and correct step indentation.
Build & Push Hospitality / build-and-push (push) Successful in 2m10s
2025-11-25 19:51:35 +01:00
steinhelge bdfdcbe0f7 Update .gitea/workflows/build.yml 2025-11-25 18:30:14 +00:00
steinhelge 16864584e4 Update .gitea/workflows/build.yml 2025-11-25 18:29:28 +00:00
steinhelge a5ec63b064 Merge pull request 'feat: Configure VITE_API_URL during build via Gitea workflow and Dockerfile, removing local fallback.' (#3) from master into dev
Build & Push Hospitality / build-and-push (push) Successful in 3m40s
Reviewed-on: #3
2025-11-25 18:27:38 +00:00
steinhelge bd64eea849 feat: Configure VITE_API_URL during build via Gitea workflow and Dockerfile, removing local fallback.
Build & Push Hospitality / build-and-push (push) Successful in 3m41s
2025-11-25 19:22:56 +01:00
6 changed files with 81 additions and 34 deletions
+25 -3
View File
@@ -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
@@ -45,7 +44,14 @@ jobs:
# ---------- Frontend ----------
- name: Build Frontend (${{ env.TAG }})
run: |
if [ "$TAG" = "dev" ]; then
API_URL="https://hospitality-dev-api.theriise.net/api"
else
API_URL="https://hospitality-api.theriise.net/api"
fi
docker build \
--build-arg VITE_API_URL=$API_URL \
-t $REGISTRY/hospitality-frontend:${TAG} \
-f src/hospitality-web/Dockerfile \
src/hospitality-web
@@ -72,3 +78,19 @@ jobs:
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
+6
View File
@@ -9,6 +9,9 @@ RUN npm ci
# Kopier resten av koden
COPY . .
ARG VITE_API_URL
ENV VITE_API_URL=$VITE_API_URL
# Bygg for produksjon
RUN npm run build
@@ -19,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
@@ -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:
@@ -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:
+17
View File
@@ -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";
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
import axios from 'axios';
import type { LoginRequest, LoginResponse, UserInfo } from '../types/auth';
const API_BASE_URL = import.meta.env.VITE_API_URL || 'http://localhost:5163/api';
const API_BASE_URL = import.meta.env.VITE_API_URL;
export const api = axios.create({
baseURL: API_BASE_URL,