From 799b012cebf0ebcc3c2fd08db93524fd2c02049e Mon Sep 17 00:00:00 2001 From: Oleksandr Shuryha Date: Thu, 26 Mar 2026 12:17:38 +0100 Subject: [PATCH] add docker config --- .dockerignore | 11 +++++++++++ docker-compose.yml | 28 ++++++++++++++++++++++++++++ vite.config.ts | 7 +++++-- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f8775b3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +node_modules +dist +frontend/dist +.git +.gitignore +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +backend/data/*.db +backend/data/*.db-* diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..849a5f0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,28 @@ +services: + backend: + image: node:20-alpine + working_dir: /app + command: sh -c "npm ci && npm run dev:backend" + ports: + - "8787:8787" + volumes: + - ./:/app + - backend_node_modules:/app/node_modules + + frontend: + image: node:20-alpine + working_dir: /app + command: sh -c "npm ci && npm run dev:frontend -- --host 0.0.0.0 --port 5173" + ports: + - "5173:5173" + environment: + - VITE_PROXY_TARGET=http://backend:8787 + depends_on: + - backend + volumes: + - ./:/app + - frontend_node_modules:/app/node_modules + +volumes: + backend_node_modules: + frontend_node_modules: diff --git a/vite.config.ts b/vite.config.ts index 971513a..fd19124 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,8 @@ import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; +const proxyTarget = process.env.VITE_PROXY_TARGET || 'http://localhost:8787'; + export default defineConfig({ root: 'frontend', plugins: [react()], @@ -11,13 +13,14 @@ export default defineConfig({ server: { proxy: { '/api': { - target: 'http://localhost:8787', + target: proxyTarget, changeOrigin: true, }, '/health': { - target: 'http://localhost:8787', + target: proxyTarget, changeOrigin: true, }, }, }, }); +