diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a0e040b --- /dev/null +++ b/Dockerfile @@ -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;"] \ No newline at end of file diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..7cd469e --- /dev/null +++ b/compose.yaml @@ -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 \ No newline at end of file diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..0b0eeac --- /dev/null +++ b/deploy.sh @@ -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 + diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..9ba98f1 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,11 @@ +server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri /index.html; + } +}