diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..56db580 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,23 @@ +name: CI/CD Deployment + +on: + push: + branches: + - master + - main + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Deploy via SSH + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.DEBIAN_HOST }} + username: ${{ secrets.DEBIAN_USER }} + key: ${{ secrets.SSH_PRIVATE_KEY }} + port: 22 + script: | + cd /opt/websitedummy + git pull origin master || git pull origin main + docker compose up -d --build diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2f0eea6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +# Build-Phase +FROM node:20-alpine AS builder +WORKDIR /app +COPY package*.json ./ +RUN npm install --legacy-peer-deps +COPY . . +RUN npm run build + +# Production-Phase +FROM nginx:alpine + +# Nginx konfigurieren für non-root Port 8080 +RUN sed -i 's/listen\( \)*80;/listen 8080;/g' /etc/nginx/conf.d/default.conf && \ + touch /var/run/nginx.pid && \ + chown -R nginx:nginx /var/run/nginx.pid /var/cache/nginx /var/log/nginx /etc/nginx/conf.d + +USER nginx +COPY --from=builder /app/dist /usr/share/nginx/html +EXPOSE 8080 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..057bb5d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3.8' + +services: + websitedummy: + build: . + image: websitedummy:latest + container_name: websitedummy + restart: always + read_only: true + tmpfs: + - /var/cache/nginx + - /var/run + ports: + - "127.0.0.1:8080:8080" + deploy: + resources: + limits: + cpus: '0.5' + memory: 256M