diff --git a/Frontend/.dockerignore b/Frontend/.dockerignore new file mode 100644 index 0000000..dd158b4 --- /dev/null +++ b/Frontend/.dockerignore @@ -0,0 +1,9 @@ +.git +.gitignore +node_modules +.nuxt +.output +.data +npm-debug.log* +dist +coverage diff --git a/Frontend/Dockerfile b/Frontend/Dockerfile new file mode 100644 index 0000000..fa19c1c --- /dev/null +++ b/Frontend/Dockerfile @@ -0,0 +1,20 @@ +FROM node:22-bookworm-slim + +WORKDIR /app/frontend + +COPY package*.json ./ +RUN npm ci --legacy-peer-deps + +COPY . . + +# Build server bundle at image build time. +RUN npx prisma generate && npm run build + +ENV NODE_ENV=production +ENV NITRO_HOST=0.0.0.0 +ENV NITRO_PORT=3000 + +EXPOSE 3000 + +# Keep schema in sync, then start Nitro production server. +CMD ["bash", "-lc", "npx prisma db push && node .output/server/index.mjs"] diff --git a/Frontend/Dockerfile.worker b/Frontend/Dockerfile.worker new file mode 100644 index 0000000..8c7273a --- /dev/null +++ b/Frontend/Dockerfile.worker @@ -0,0 +1,15 @@ +FROM node:22-bookworm-slim + +WORKDIR /app/delivery + +COPY package*.json ./ +# Worker does not need Nuxt postinstall hooks. +RUN npm install --ignore-scripts --legacy-peer-deps + +COPY . . + +RUN npx prisma generate + +ENV NODE_ENV=production + +CMD ["npm", "run", "worker:delivery"] diff --git a/docker-compose.yml b/docker-compose.yml index 55d47d1..05dade6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,8 @@ services: frontend: - image: node:22-bookworm-slim - working_dir: /app/frontend - volumes: - - ./Frontend:/app/frontend - - frontend_node_modules:/app/frontend/node_modules - - frontend_nuxt:/app/frontend/.nuxt + build: + context: ./Frontend + dockerfile: Dockerfile expose: - "3000" environment: @@ -27,10 +24,6 @@ services: # Set this in your shell or a compose override: # OPENROUTER_API_KEY: "..." # GIGACHAT_AUTH_KEY: "..." (if you use GigaChat integration) - command: > - bash -lc " - ./scripts/compose-dev.sh - " depends_on: - langfuse-web labels: @@ -51,20 +44,14 @@ services: - dokploy-network delivery: - image: node:22-bookworm-slim - working_dir: /app/delivery - volumes: - - ./Frontend:/app/delivery - - delivery_node_modules:/app/delivery/node_modules + build: + context: ./Frontend + dockerfile: Dockerfile.worker environment: DATABASE_URL: "${DATABASE_URL:-postgresql://postgres:dpb6gmj1umjhohso@crm-sql-q57r8m:5432/postgres?schema=public}" REDIS_URL: "${REDIS_URL:-redis://default:nw0mv1pemhnbh7gw@crm-redis-vkpxku:6379}" TELEGRAM_API_BASE: "${TELEGRAM_API_BASE:-https://api.telegram.org}" TELEGRAM_BOT_TOKEN: "${TELEGRAM_BOT_TOKEN:-}" - command: > - bash -lc " - bash ./scripts/compose-worker.sh - " networks: - default - dokploy-network @@ -201,9 +188,6 @@ services: start_period: 5s volumes: - frontend_node_modules: - frontend_nuxt: - delivery_node_modules: langfuse_postgres_data: langfuse_clickhouse_data: langfuse_clickhouse_logs: