From 04d0d3cd26ef9a964ce4ef32e5f04b716775bf6f Mon Sep 17 00:00:00 2001 From: dvirlabs Date: Fri, 13 Jun 2025 18:01:03 +0300 Subject: [PATCH] Add woodpecker yaml and Dockerfile --- .woodpecker.yaml | 12 ++++++++++++ backend/.woodpecker.yaml | 22 ++++++++++++++++++++++ backend/Dockerfile | 12 ++++++++++++ frontend/.woodpecker.yaml | 22 ++++++++++++++++++++++ frontend/Dockerfile | 16 ++++++++++++++++ frontend/nginx.conf | 11 +++++++++++ 6 files changed, 95 insertions(+) create mode 100644 .woodpecker.yaml create mode 100644 backend/.woodpecker.yaml create mode 100644 backend/Dockerfile create mode 100644 frontend/.woodpecker.yaml create mode 100644 frontend/Dockerfile create mode 100644 frontend/nginx.conf diff --git a/.woodpecker.yaml b/.woodpecker.yaml new file mode 100644 index 0000000..56e9831 --- /dev/null +++ b/.woodpecker.yaml @@ -0,0 +1,12 @@ +pipeline: + build-frontend: + when: + path: + include: [ frontend/** ] + # same frontend build step + + build-backend: + when: + path: + include: [ backend/** ] + # same backend build step diff --git a/backend/.woodpecker.yaml b/backend/.woodpecker.yaml new file mode 100644 index 0000000..ee321a3 --- /dev/null +++ b/backend/.woodpecker.yaml @@ -0,0 +1,22 @@ +when: + path: + include: + - backend/** + +pipeline: + build-backend: + image: gcr.io/kaniko-project/executor:latest + environment: + DOCKER_CONFIG: /kaniko/.docker/ + volumes: + - name: docker-config + path: /kaniko/.docker/ + commands: + - echo "{\"auths\":{\"https://harbor.dvirlabs.com\":{\"username\":\"${DOCKER_USERNAME}\",\"password\":\"${DOCKER_PASSWORD}\"}}}" > /kaniko/.docker/config.json + - /kaniko/executor \ + --dockerfile=Dockerfile \ + --context=. \ + --destination=harbor.dvirlabs.com/labmap/backend:latest +volumes: + - name: docker-config + temp: {} diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..8236346 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,12 @@ +# backend/Dockerfile +FROM python:3.11-slim + +WORKDIR /app + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] +EXPOSE 8000 diff --git a/frontend/.woodpecker.yaml b/frontend/.woodpecker.yaml new file mode 100644 index 0000000..c433673 --- /dev/null +++ b/frontend/.woodpecker.yaml @@ -0,0 +1,22 @@ +when: + path: + include: + - frontend/** + +pipeline: + build-frontend: + image: gcr.io/kaniko-project/executor:latest + environment: + DOCKER_CONFIG: /kaniko/.docker/ + volumes: + - name: docker-config + path: /kaniko/.docker/ + commands: + - echo "{\"auths\":{\"https://harbor.dvirlabs.com\":{\"username\":\"${DOCKER_USERNAME}\",\"password\":\"${DOCKER_PASSWORD}\"}}}" > /kaniko/.docker/config.json + - /kaniko/executor \ + --dockerfile=Dockerfile \ + --context=. \ + --destination=harbor.dvirlabs.com/labmap/frontend:latest +volumes: + - name: docker-config + temp: {} diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..c0b8577 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,16 @@ +# frontend/Dockerfile +FROM node:20 AS builder + +WORKDIR /app +COPY . . + +RUN npm install +RUN npm run build + +# Serve with nginx +FROM nginx:alpine +COPY --from=builder /app/dist /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf + +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/frontend/nginx.conf b/frontend/nginx.conf new file mode 100644 index 0000000..79fd959 --- /dev/null +++ b/frontend/nginx.conf @@ -0,0 +1,11 @@ +server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } +}