deploy(core): add dockerfile and compose (and deploy)

This commit is contained in:
2025-10-07 14:37:47 +02:00
parent b482baf56d
commit 3a3b331092
4 changed files with 69 additions and 0 deletions

14
Dockerfile Normal file
View File

@@ -0,0 +1,14 @@
FROM node:latest AS build
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build --production
RUN echo "Contents of /app/dist/byhaider-homepage/browser:" && ls -l /app/dist/byhaider-homepage/browser
FROM nginx:alpine
COPY --from=build /app/dist/byhaider-homepage/browser /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

19
compose.yaml Normal file
View File

@@ -0,0 +1,19 @@
services:
homepage:
build:
context: .
image: byhaider-homepage:latest
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.byhaider-homepage.rule=Host(`byhaider.dev`)"
- "traefik.http.routers.byhaider-homepage.entrypoints=websecure"
- "traefik.http.routers.byhaider-homepage.tls=true"
- "traefik.http.routers.byhaider-homepage.tls.certResolver=cloudflare"
- "traefik.http.services.byhaider-homepage.loadbalancer.server.port=80"
networks:
- traefik-network
networks:
traefik-network:
external: true

25
deploy.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/bash
set -e
echo "🚀 Starte Deployment für byHaider-Homepage..."
cd ~/byhaider-homepage
echo "📥 Pull latest changes for byhaider-homepage..."
git pull origin main
echo "🛑 Stoppe alte Container..."
docker compose down
echo "📦 Baue Images neu..."
docker compose build
echo "⬆️ Starte Container..."
docker compose up -d
echo "🧹 Bereinige alte Images..."
docker image prune -f
echo "✅ Deployment abgeschlossen!"
docker compose ps

11
nginx.conf Normal file
View File

@@ -0,0 +1,11 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri /index.html;
}
}