diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml new file mode 100644 index 0000000..8de753f --- /dev/null +++ b/.forgejo/workflows/deploy.yml @@ -0,0 +1,55 @@ +name: Build and Deploy + +on: + push: + branches: + - main + - development + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Forgejo Registry + uses: docker/login-action@v3 + with: + registry: forgejo.wulfconsulting.cloud + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: Determine tag + id: tag + run: | + if [ "${{ github.ref_name }}" = "main" ]; then + echo "tag=latest" >> $GITHUB_OUTPUT + else + echo "tag=dev" >> $GITHUB_OUTPUT + fi + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: forgejo.wulfconsulting.cloud/lorentz/quest-vorteq:${{ steps.tag.outputs.tag }} + + deploy: + needs: build + runs-on: ubuntu-latest + steps: + - name: Deploy to server + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.DEPLOY_HOST }} + username: ${{ secrets.DEPLOY_USER }} + key: ${{ secrets.DEPLOY_SSH_KEY }} + script: | + cd /opt/stacks/vorteq + docker compose pull app-prod app-dev + docker compose up -d app-prod app-dev diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml deleted file mode 100644 index 5ab587f..0000000 --- a/.forgejo/workflows/test.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Test CI - -on: - push: - branches: - - main - -jobs: - test: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Hello - run: echo "Forgejo Actions is working!" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f2ca0c3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM node:22-alpine AS base + +# Install dependencies +FROM base AS deps +WORKDIR /app +COPY package.json package-lock.json* ./ +RUN npm ci + +# Build the application +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . +RUN npm run build + +# Production image +FROM base AS runner +WORKDIR /app +ENV NODE_ENV=production +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs +COPY --from=builder /app/public ./public +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static +USER nextjs +EXPOSE 3000 +ENV PORT=3000 +CMD ["node", "server.js"] diff --git a/docker-compose.yml b/docker-compose.yml index 3f72b17..d784bf5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.8' services: # Traefik Reverse Proxy