From a986878a3b6428a888411dda56af7dad24e08142 Mon Sep 17 00:00:00 2001 From: ramvignesh-b Date: Wed, 22 Apr 2026 19:14:21 +0530 Subject: [PATCH] feat: containerize backend and frontend services --- backend/.dockerignore | 1 + backend/Dockerfile | 11 +++++++++++ frontend/.dockerignore | 6 ++++++ frontend/Dockerfile | 32 ++++++++++++++++++++++++++++++++ frontend/nginx.conf | 23 +++++++++++++++++++++++ 5 files changed, 73 insertions(+) create mode 100644 backend/.dockerignore create mode 100644 backend/Dockerfile create mode 100644 frontend/.dockerignore create mode 100644 frontend/Dockerfile create mode 100644 frontend/nginx.conf diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..1d17dae --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1 @@ +.venv diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..8b4a99e --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,11 @@ +FROM astral/uv:python3.13-bookworm-slim + +WORKDIR /app + +COPY pyproject.toml uv.lock ./ +RUN uv sync --frozen --no-dev + +COPY . . +EXPOSE 8000 + +CMD ["uv", "run", "--frozen", "gunicorn", "--bind", "0.0.0.0:8000", "config.wsgi:application"] \ No newline at end of file diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..bc7f65f --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,6 @@ + +node_modules +test-results +playwright-report +dist +coverage \ No newline at end of file diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..b9c97b3 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,32 @@ +FROM oven/bun:1 AS bun +WORKDIR /app +COPY package.json bun.lock* ./ +RUN bun install --frozen-lockfile +COPY . . + +ARG BACKEND_DOMAIN +ARG BACKEND_PORT +ARG SSL_ENABLED +ARG VITE_API_URL + +ENV BACKEND_DOMAIN=$BACKEND_DOMAIN +ENV BACKEND_PORT=$BACKEND_PORT +ENV SSL_ENABLED=$SSL_ENABLED + +ENV VITE_API_URL=$VITE_API_URL + +RUN bun run build:prod + +FROM nginxinc/nginx-unprivileged:alpine-slim +RUN touch /tmp/access.log /tmp/error.log +RUN rm /etc/nginx/conf.d/* + +COPY nginx.conf /etc/nginx/nginx.conf +COPY --from=bun /app/dist /usr/share/nginx/html +# transfer the ownership since nginx is running rootless +USER root +RUN chown -R nginx:nginx /usr/share/nginx/html +USER nginx + +EXPOSE 8080 +ENTRYPOINT ["nginx", "-e", "/tmp/error.log", "-g", "daemon off;"] \ No newline at end of file diff --git a/frontend/nginx.conf b/frontend/nginx.conf new file mode 100644 index 0000000..988e6aa --- /dev/null +++ b/frontend/nginx.conf @@ -0,0 +1,23 @@ +pid /tmp/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + access_log /tmp/access.log; + error_log /tmp/error.log; + + server { + listen 8080; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri /index.html; + } + } +}