From b886a89a1473be5c8383a4dbcf6f0819972f3753 Mon Sep 17 00:00:00 2001 From: muhammadvadud Date: Tue, 4 Nov 2025 03:41:54 +0500 Subject: [PATCH 1/7] Docker qo'shildi --- Dockerfile | 23 +++++++++++++++++++++++ docker-compose.yml | 12 ++++++++++++ stack.yaml | 13 +++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 stack.yaml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..65dd6ce --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM node:20-alpine AS builder + +WORKDIR /app + +COPY package*.json ./ +RUN npm install --legacy-peer-deps + +COPY . . +RUN npm run build + +FROM node:20-alpine + +WORKDIR /app +ENV NODE_ENV=production +ENV PORT=3000 + +COPY --from=builder /app/package*.json ./ +COPY --from=builder /app/.next ./.next +COPY --from=builder /app/public ./public +COPY --from=builder /app/node_modules ./node_modules + +EXPOSE 5263 +CMD ["npm", "start"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..cd2aad4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3.9" + +services: + frontend: + image: muhammadvadud/simple-travel-front-admin:latest + build: . + ports: + - "5263:3000" + deploy: + replicas: 2 + restart_policy: + condition: on-failure diff --git a/stack.yaml b/stack.yaml new file mode 100644 index 0000000..f28df13 --- /dev/null +++ b/stack.yaml @@ -0,0 +1,13 @@ +version: "3.9" + +services: + simple-travel-frontend: + image: muhammadvadud/simple-travel-front-admin:latest + ports: + - "5263:3000" + env_file: + - .env + deploy: + replicas: 2 + restart_policy: + condition: on-failure From fb2d6e012ddff75314499db88069309e823c338a Mon Sep 17 00:00:00 2001 From: muhammadvadud Date: Tue, 4 Nov 2025 03:45:53 +0500 Subject: [PATCH 2/7] Fix typo --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 65dd6ce..155eb78 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,5 +19,5 @@ COPY --from=builder /app/.next ./.next COPY --from=builder /app/public ./public COPY --from=builder /app/node_modules ./node_modules -EXPOSE 5263 +EXPOSE 3000 CMD ["npm", "start"] From e3e81e2ff917e4d3b72a09b00c4763bf0923d9c6 Mon Sep 17 00:00:00 2001 From: muhammadvadud Date: Tue, 4 Nov 2025 03:51:57 +0500 Subject: [PATCH 3/7] Fix typo --- Dockerfile | 16 +++------------- stack.yaml | 4 +--- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index 155eb78..f08a1a5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,13 @@ FROM node:20-alpine AS builder - WORKDIR /app - COPY package*.json ./ RUN npm install --legacy-peer-deps - COPY . . RUN npm run build FROM node:20-alpine - WORKDIR /app -ENV NODE_ENV=production -ENV PORT=3000 - -COPY --from=builder /app/package*.json ./ -COPY --from=builder /app/.next ./.next -COPY --from=builder /app/public ./public -COPY --from=builder /app/node_modules ./node_modules - +COPY --from=builder /app/dist ./dist +RUN npm install -g serve EXPOSE 3000 -CMD ["npm", "start"] +CMD ["serve", "-s", "dist"] diff --git a/stack.yaml b/stack.yaml index f28df13..818d468 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,12 +1,10 @@ version: "3.9" services: - simple-travel-frontend: + simple-travel-front-admin: image: muhammadvadud/simple-travel-front-admin:latest ports: - "5263:3000" - env_file: - - .env deploy: replicas: 2 restart_policy: From 06c9ea171b9c9cf8fac14e101d1c026498843cc6 Mon Sep 17 00:00:00 2001 From: muhammadvadud Date: Tue, 4 Nov 2025 16:05:36 +0500 Subject: [PATCH 4/7] Fix typo --- .dockerignore | 12 ++++++++++++ .env | 12 +++++++++++- .env.production | 11 +++++++++++ Dockerfile | 29 ++++++++++++++++++----------- docker-compose.yml | 28 ++++++++++++++++++---------- nginx/nginx.conf | 33 +++++++++++++++++++++++++++++++++ 6 files changed, 103 insertions(+), 22 deletions(-) create mode 100644 .dockerignore create mode 100644 .env.production create mode 100644 nginx/nginx.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a8bc5b0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,12 @@ +node_modules +dist +.git +.gitignore +.env.local +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.DS_Store +*.md +.vscode +.idea \ No newline at end of file diff --git a/.env b/.env index 5dea892..d1bc400 100644 --- a/.env +++ b/.env @@ -1 +1,11 @@ -VITE_API_URL=https://simple-travel.felixits.uz/api/v1/ \ No newline at end of file +# API Configuration +VITE_API_URL=https://simple-travel.felixits.uz/api/v1/ +VITE_API_TIMEOUT=30000 + +# App Configuration +VITE_APP_NAME=simple-travel-admin +VITE_APP_VERSION=1.0.0 + +# Environment +NODE_ENV=production + diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..d1bc400 --- /dev/null +++ b/.env.production @@ -0,0 +1,11 @@ +# API Configuration +VITE_API_URL=https://simple-travel.felixits.uz/api/v1/ +VITE_API_TIMEOUT=30000 + +# App Configuration +VITE_APP_NAME=simple-travel-admin +VITE_APP_VERSION=1.0.0 + +# Environment +NODE_ENV=production + diff --git a/Dockerfile b/Dockerfile index f08a1a5..26ad7d6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,20 @@ -FROM node:20-alpine AS builder -WORKDIR /app -COPY package*.json ./ -RUN npm install --legacy-peer-deps -COPY . . -RUN npm run build - +# Build stage FROM node:20-alpine + WORKDIR /app -COPY --from=builder /app/dist ./dist -RUN npm install -g serve -EXPOSE 3000 -CMD ["serve", "-s", "dist"] + +# Copy dependencies +COPY package.json package-lock.json* ./ + +RUN npm ci --legacy-peer-deps + +# Copy all source +COPY . . + +# Set production env (agar .env.production bo‘lsa ishlaydi) +ENV NODE_ENV=production + +# Build for production +RUN npm run build +ENTRYPOINT npm run preview + diff --git a/docker-compose.yml b/docker-compose.yml index cd2aad4..f9c4cb5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,20 @@ -version: "3.9" - services: - frontend: - image: muhammadvadud/simple-travel-front-admin:latest - build: . + simple-travel-admin: + build: + context: . + dockerfile: Dockerfile + args: + - VITE_API_URL=${VITE_API_URL} + - VITE_APP_NAME=${VITE_APP_NAME} + container_name: simple-travel-admin ports: - - "5263:3000" - deploy: - replicas: 2 - restart_policy: - condition: on-failure + - "5263:4173" + env_file: + - .env.production + restart: unless-stopped + networks: + - network + +networks: + network: + driver: bridge diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..5fe68ed --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,33 @@ +server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + index index.html; + + # Gzip compression + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/javascript application/json; + + # Security headers + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; + + # React Router support + location / { + try_files $uri $uri/ /index.html; + } + + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + + # Don't cache index.html + location = /index.html { + add_header Cache-Control "no-cache, no-store, must-revalidate"; + } +} \ No newline at end of file From 033692754ca5c04db10d0c06842b67af980bb23f Mon Sep 17 00:00:00 2001 From: muhammadvadud Date: Tue, 4 Nov 2025 16:22:01 +0500 Subject: [PATCH 5/7] Fix typo --- vite.config.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vite.config.ts b/vite.config.ts index 97895d8..2d42a73 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,7 +18,12 @@ export default defineConfig({ server: { host: true, port: 5173, + }, preview: { + host: true, // Production (vite preview) uchun + port: 3000, + allowedHosts: ["admin.simpletravel.uz"], // ✅ bu yer muhim }, + build: { outDir: "dist", // Vercel build chiqishini shu papkadan oladi sourcemap: false, // Agar kerak bo‘lmasa o‘chirib qo‘ying From 5374628b85f8046ae4138367d3179f6855bb0c84 Mon Sep 17 00:00:00 2001 From: muhammadvadud Date: Tue, 4 Nov 2025 16:25:40 +0500 Subject: [PATCH 6/7] Fix typo --- vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index 2d42a73..ceca0a8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -20,7 +20,7 @@ export default defineConfig({ port: 5173, }, preview: { host: true, // Production (vite preview) uchun - port: 3000, + port: 5263, allowedHosts: ["admin.simpletravel.uz"], // ✅ bu yer muhim }, From 83a29a232f8fdd85b7082b66582593c1c8b0edd9 Mon Sep 17 00:00:00 2001 From: muhammadvudud Date: Tue, 4 Nov 2025 14:37:39 +0300 Subject: [PATCH 7/7] Fix Typo Server --- .env.production | 1 + docker-compose.yml | 2 +- vite.config.ts | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.env.production b/.env.production index d1bc400..985148c 100644 --- a/.env.production +++ b/.env.production @@ -9,3 +9,4 @@ VITE_APP_VERSION=1.0.0 # Environment NODE_ENV=production + diff --git a/docker-compose.yml b/docker-compose.yml index f9c4cb5..ad84c84 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,7 @@ services: - VITE_APP_NAME=${VITE_APP_NAME} container_name: simple-travel-admin ports: - - "5263:4173" + - "5263:5263" env_file: - .env.production restart: unless-stopped diff --git a/vite.config.ts b/vite.config.ts index ceca0a8..00aa6fc 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,7 +18,8 @@ export default defineConfig({ server: { host: true, port: 5173, - }, preview: { + }, + preview: { host: true, // Production (vite preview) uchun port: 5263, allowedHosts: ["admin.simpletravel.uz"], // ✅ bu yer muhim