From 3c6e5e091c0be4bee38bfc930a39dbdcb54162d8 Mon Sep 17 00:00:00 2001 From: Viswamedha Nalabotu Date: Tue, 18 Nov 2025 21:39:01 +0000 Subject: [PATCH] Added compose files for local development and other tweaks --- .gitignore | 3 +- compose/dev/docker-compose.yml | 28 +++++ compose/dev/node/Dockerfile | 13 +++ compose/dev/python/Dockerfile | 39 +++++++ compose/prod/Dockerfile | 32 ++++-- compose/prod/start | 8 ++ config/__pycache__/__init__.cpython-314.pyc | Bin 0 -> 122 bytes config/__pycache__/settings.cpython-314.pyc | Bin 0 -> 2492 bytes config/__pycache__/urls.cpython-314.pyc | Bin 0 -> 983 bytes config/__pycache__/wsgi.cpython-314.pyc | Bin 0 -> 603 bytes config/settings.py | 1 + eslint.config.mjs | 1 + requirements.txt | 113 ++++++++++++++++++++ tsconfig.json | 2 +- vite.config.ts | 2 +- 15 files changed, 229 insertions(+), 13 deletions(-) create mode 100644 compose/dev/docker-compose.yml create mode 100644 compose/dev/node/Dockerfile create mode 100644 compose/dev/python/Dockerfile create mode 100644 compose/prod/start create mode 100644 config/__pycache__/__init__.cpython-314.pyc create mode 100644 config/__pycache__/settings.cpython-314.pyc create mode 100644 config/__pycache__/urls.cpython-314.pyc create mode 100644 config/__pycache__/wsgi.cpython-314.pyc create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index ad3f523..3ec0b26 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,5 @@ Thumbs.db vite.config.*.timestamp* vitest.config.*.timestamp* -.env \ No newline at end of file +.env +static \ No newline at end of file diff --git a/compose/dev/docker-compose.yml b/compose/dev/docker-compose.yml new file mode 100644 index 0000000..e29d678 --- /dev/null +++ b/compose/dev/docker-compose.yml @@ -0,0 +1,28 @@ + +services: + + web: + build: + context: ../.. + dockerfile: compose/dev/node/Dockerfile + environment: + NODE_ENV: development + ports: + - "0.0.0.0:5173:5173" + volumes: + - ../../src:/app/src + - ../../index.html:/app/index.html + - ../../vite.config.ts:/app/vite.config.ts + - ../../tsconfig.json:/app/tsconfig.json + + api: + build: + context: ../.. + dockerfile: compose/dev/python/Dockerfile + ports: + - "0.0.0.0:8000:8000" + volumes: + - ../../:/app:cached + - ../../build:/app/build + + diff --git a/compose/dev/node/Dockerfile b/compose/dev/node/Dockerfile new file mode 100644 index 0000000..d40fc0a --- /dev/null +++ b/compose/dev/node/Dockerfile @@ -0,0 +1,13 @@ +FROM node:22-bullseye + +WORKDIR /app + +COPY package.json package-lock.json ./ +RUN npm install + +COPY src ./src +COPY index.html . +COPY vite.config.* . +COPY tsconfig.* . + +CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"] \ No newline at end of file diff --git a/compose/dev/python/Dockerfile b/compose/dev/python/Dockerfile new file mode 100644 index 0000000..c8e0b3c --- /dev/null +++ b/compose/dev/python/Dockerfile @@ -0,0 +1,39 @@ +FROM node:22-alpine AS node + +WORKDIR /app + +COPY package*.json ./ +RUN npm ci + +COPY src ./src +COPY index.html . +COPY vite.config.* . +COPY tsconfig.* . + +RUN npm run build + +FROM python:3.14.0-bookworm as python + +RUN apt-get update && apt-get install --no-install-recommends -y \ + build-essential \ + libpq-dev \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && rm -rf /var/lib/apt/lists/* + +COPY requirements.txt . +RUN pip install --no-cache-dir --requirement /requirements.txt + +WORKDIR /app + +RUN apt-get update && apt-get install --no-install-recommends -y \ + sudo git bash-completion nano ssh + +COPY . . + +COPY --from=node /app/build ./build + +COPY ./compose/prod/start /start +RUN sed -i 's/\r$//g' /start +RUN chmod +x /start + +ENTRYPOINT ["/start"] \ No newline at end of file diff --git a/compose/prod/Dockerfile b/compose/prod/Dockerfile index 22a9692..fc7021c 100644 --- a/compose/prod/Dockerfile +++ b/compose/prod/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22-alpine AS builder +FROM node:22-alpine AS node WORKDIR /app @@ -11,21 +11,33 @@ RUN npm ci COPY . . -RUN npm run build:api -RUN npm run build:web +RUN npm run build -FROM node:22-alpine +FROM python:3.14.0-bookworm as python + +RUN apt-get update && apt-get install --no-install-recommends -y \ + build-essential \ + libpq-dev \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && rm -rf /var/lib/apt/lists/* + +COPY requirements.txt . +RUN pip install --no-cache-dir --requirement /requirements.txt WORKDIR /app +RUN apt-get update && apt-get install --no-install-recommends -y \ + sudo git bash-completion nano ssh + +COPY . . + COPY package*.json ./ RUN npm ci --omit=dev -COPY --from=builder /app/dist/apps/api ./dist/api -COPY --from=builder /app/dist/apps/web ./dist/web +COPY --from=node /app/build ./build -COPY ./apps/api/src ./apps/api/src +COPY ./compose/prod/start /start +RUN sed -i 's/\r$//g' /start +RUN chmod +x /start -EXPOSE 3000 - -CMD ["node", "dist/api/main.js"] +ENTRYPOINT ["/start"] \ No newline at end of file diff --git a/compose/prod/start b/compose/prod/start new file mode 100644 index 0000000..24964c4 --- /dev/null +++ b/compose/prod/start @@ -0,0 +1,8 @@ +#!/bin/bash + +set -o errexit +set -o pipefail +set -o nounset + +python manage.py collectstatic --noinput +exec /usr/local/bin/gunicorn config.wsgi --bind 0.0.0.0:8000 diff --git a/config/__pycache__/__init__.cpython-314.pyc b/config/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a52b62fd664d6bdf445c4db9898c26d6fa8e05fa GIT binary patch literal 122 zcmdPq_I|p@<2{{|u76C9a=XP@tcj xpO==It{)$tnU`4-AFo$Xd5gm)H$SB`C)KWq6{rqmQZb0}iJ6g+v4|PS0szjS7W4oB literal 0 HcmV?d00001 diff --git a/config/__pycache__/settings.cpython-314.pyc b/config/__pycache__/settings.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..908a4b28399dbf47c04579e2b79b8fad8e911dc3 GIT binary patch literal 2492 zcmb7G%~RV(6qo!dTedL<0{Lo{fhGe4sWhZbI+--W7T}4o-IX2M%%mD&t+5h)IMNyt zoqX>l$NmfbUwR#FH4x-egY+g^)m#2{eHw1scX&f1K)%(*n&$NEXeINpykafPV^p(`c5=!0!T@ zBeUq@JhgaLU53LZ3r|&R&*ofAh;HqAhHW+VJ+AH8PjQ3r$>b)su%i;Jal0?M z8(QCFMb%8*;#{ISWT<(A>$m{I4KZ)?U+{OpdIKO$+rgY}0lKLY-L^RRBP|{HbOYZ6 zdYo(#(ssWV1kG-^{D5QRLBlo$YzY7;5WB56Tw&y|Fn}j5%r!fP!5O+sIJeeV11|q{X*Y*FCTuO@X-UTAzonyVwy)pwl5()=k||9i6;xAIb<1>m9+=^h|!LDuWV?Wl0 z3t}Pl6&0?TmD(1zY!}*DVSQ7(U*`E{Z zwJoJ8%JNPH6_iI}sR+UfG{$sEEN|AuO-adD3K9SowSTEHSps6SuMX6NynR*|5jQv>w+Nc20gzx3ar-E<4^qG55 z=N$vzcdmn8@Lz>H17j~t)AZX=l8*c}N6{DG#;8>G74zf$H|(|7?6u$6`8Vv+Yj)`k zyZV}4?J~U#l|ghj*^5z$bT@jO&2`i7lJQ)qn|YUGG9i#mQ`xKCRF9z&xx=Z#5tDfp zI%0CKU^aP_;@(k_`Ajbyn@;u;Y&6yjr_-TsqW1|ky>dup0X~{JVzP%hJ}_i{y7znb zMlTx9f?~9yj7vGLA&|oo>z7jg5=6ctu$+>R&I5pW#9J3Q$ d<`|9;>!qm7Y&UrX1KUed7jFMb<(vfw&)@f>EfN3# literal 0 HcmV?d00001 diff --git a/config/__pycache__/urls.cpython-314.pyc b/config/__pycache__/urls.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ca439167f94dc6cc5e6f4ccaec40b025b6acd10 GIT binary patch literal 983 zcmb7DPixdb6rW_XZOz(N@ZzD+DLrI^+YApr#)6< zTpxq+0gaJD$7pPfjG?K_O>LW_&d^fUCOWdV(71DC9#&{AK>aU47EJA zwvpQn-$TfLHGYO8&Zfz%5TQyq!&5Gr2+jpRrIGS%`{kVClR~6UVu&82Om90SUdH8W0 zo;SgoW|hC&Di_#)a*bGFd>gm?>fLnb=l`t5nz<6{n?Ynr| zNa@#d)#LEA;4R4}cTkD)&uk|tpAitSt>oxHh3mMk?HXk_jI)G+VQI17Embag?yi)} zK>(`}1m#-82AWVJnFzheWp9C^fZqs}mP`~aEzP;?EzI!?y4IUt-XikPtU`_fkKBRRWydg#D|6kjeqv;7eMcKtOQ?I})1A+I7yh|_v46h*&Dy@~ MnCs@pp6J1iUyQRMkN^Mx literal 0 HcmV?d00001 diff --git a/config/__pycache__/wsgi.cpython-314.pyc b/config/__pycache__/wsgi.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec4a766406f5c1761103c369bfa5042e7b713c08 GIT binary patch literal 603 zcmYjP%Wl*#6t$CqsXXd{fOdt1d2B{NTu|8{gjCcr1i`e*6tRMgn|Ly=96O5LDeVf_ z@CAGXKfresfk5&KgxG`T2XH2h+Pm;Q*Y|Obu6?t+h=8-<=ga&f1mJfSG}bx>v($mN zAOZ%w1`!OQfzErO_ry2;74QmfEi^4BeyekW8x;9bYt^eG*XLgatH&vGHiFkd@66$M z^m5n_aiZjyXLzj21{S5-Wr+z83Jqp&3ZK>MhuEzZbpjX`S*M|`P^V+aA qy8s~i1Md6;-Usv!{Qyf}z|zrjaI~`a4LthQz4o ({ root: __dirname, cacheDir: './node_modules/.vite/build', server: { - port: 4200, + port: 5173, host: 'localhost', }, preview: {