diff --git a/.gitea/workflows/build-and-push.yaml b/.gitea/workflows/build-and-push.yaml new file mode 100644 index 0000000..2df87b9 --- /dev/null +++ b/.gitea/workflows/build-and-push.yaml @@ -0,0 +1,35 @@ +name: Build and Push Docker Image + +on: + push: + branches: [ main ] + +env: + REGISTRY: git.nullptr.top + IMAGE_NAME: git.nullptr.top/liquidcode/liquidcode-frontend + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: liquidcode-ci-service + password: ${{ secrets.SERVICE_ACCOUNT_TOKEN }} + + - name: Build and Push Docker image + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: ${{ env.IMAGE_NAME }}:latest,${{ env.IMAGE_NAME }}:${{ gitea.sha }} + cache-from: type=registry,ref=${{ env.IMAGE_NAME }}:buildcache + cache-to: type=registry,ref=${{ env.IMAGE_NAME }}:buildcache,mode=max diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4f658f7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# Build stage +FROM node:20-alpine AS build +WORKDIR /app + +# Copy package files +COPY package.json package-lock.json ./ + +# Install dependencies +RUN npm ci + +# Copy source code +COPY . . + +# Build the application +RUN npm run build + +# Production stage +FROM node:20-alpine AS runtime +WORKDIR /app + +# Install a simple HTTP server to serve static files +RUN npm install -g serve + +# Copy built application from build stage +COPY --from=build /app/dist ./dist + +EXPOSE 3000 + +CMD ["serve", "-s", "dist", "-l", "3000"]