From ae22236943e7c407ea2313aa7ebafafae885f8d2 Mon Sep 17 00:00:00 2001
From: ahmadrezabd
Date: Thu, 4 Dec 2025 18:21:55 +0330
Subject: [PATCH] added docker files
---
.dockerignore | 56 ++++++++++++++++++
DOCKER.md | 120 +++++++++++++++++++++++++++++++++++++++
Dockerfile | 52 +++++++++++++++++
components/content-1.tsx | 3 +-
docker-compose.yml | 17 ++++++
next.config.ts | 1 +
6 files changed, 247 insertions(+), 2 deletions(-)
create mode 100644 .dockerignore
create mode 100644 DOCKER.md
create mode 100644 Dockerfile
create mode 100644 docker-compose.yml
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..66dfd91
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,56 @@
+# Dependencies
+node_modules
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# Testing
+coverage
+.nyc_output
+
+# Next.js
+.next
+out
+dist
+build
+
+# Production
+*.log
+
+# Misc
+.DS_Store
+*.pem
+
+# Debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Local env files
+.env*.local
+.env
+
+# Vercel
+.vercel
+
+# TypeScript
+*.tsbuildinfo
+next-env.d.ts
+
+# IDE
+.vscode
+.idea
+*.swp
+*.swo
+*~
+
+# Git
+.git
+.gitignore
+
+# Docker
+Dockerfile
+docker-compose.yml
+.dockerignore
+DOCKER.md
diff --git a/DOCKER.md b/DOCKER.md
new file mode 100644
index 0000000..ac45b6f
--- /dev/null
+++ b/DOCKER.md
@@ -0,0 +1,120 @@
+# راهنمای استفاده از Docker
+
+## نصب Docker
+
+اگر Docker روی سیستم شما نصب نیست، میتوانید از یکی از روشهای زیر استفاده کنید:
+
+### Windows
+
+1. **Docker Desktop برای Windows** را دانلود و نصب کنید:
+ - دانلود از: https://www.docker.com/products/docker-desktop/
+ - پس از نصب، Docker Desktop را اجرا کنید
+ - منتظر بمانید تا Docker شروع به کار کند
+
+2. **بررسی نصب:**
+ ```powershell
+ docker --version
+ docker compose version
+ ```
+
+### Linux
+
+```bash
+# Ubuntu/Debian
+curl -fsSL https://get.docker.com -o get-docker.sh
+sudo sh get-docker.sh
+
+# اضافه کردن کاربر به گروه docker
+sudo usermod -aG docker $USER
+```
+
+### macOS
+
+1. **Docker Desktop برای Mac** را دانلود و نصب کنید:
+ - دانلود از: https://www.docker.com/products/docker-desktop/
+
+## ساخت و اجرای کانتینر
+
+### استفاده از Docker Compose (پیشنهادی)
+
+**نکته:** در نسخههای جدید Docker، از `docker compose` (با فاصله) استفاده میشود به جای `docker-compose` (با خط تیره).
+
+```bash
+# ساخت و اجرای کانتینر
+docker compose up -d
+
+# مشاهده لاگها
+docker compose logs -f
+
+# توقف کانتینر
+docker compose down
+
+# ساخت مجدد و اجرا
+docker compose up -d --build
+```
+
+**اگر دستور بالا کار نکرد، از نسخه قدیمی استفاده کنید:**
+```bash
+docker-compose up -d
+```
+
+### استفاده مستقیم از Docker
+
+```bash
+# ساخت image
+docker build -t next-ctrlp .
+
+# اجرای کانتینر
+docker run -p 3000:3000 next-ctrlp
+
+# اجرا در حالت detached
+docker run -d -p 3000:3000 --name next-ctrlp-app next-ctrlp
+```
+
+## دسترسی به اپلیکیشن
+
+پس از اجرای کانتینر، اپلیکیشن در آدرس زیر در دسترس است:
+- http://localhost:3000
+
+## عیبیابی
+
+### مشکل: دستور docker شناسایی نمیشود
+
+**راه حل:**
+1. مطمئن شوید Docker Desktop نصب و در حال اجرا است
+2. PowerShell را بسته و دوباره باز کنید
+3. یا از Command Prompt استفاده کنید
+4. بررسی کنید که Docker در PATH سیستم قرار دارد
+
+### مشکل: Port 3000 در حال استفاده است
+
+**راه حل:**
+```bash
+# تغییر پورت در docker-compose.yml
+ports:
+ - "3001:3000" # حالا از پورت 3001 استفاده کنید
+```
+
+یا کانتینر دیگری که از پورت 3000 استفاده میکند را متوقف کنید.
+
+## متغیرهای محیطی
+
+اگر نیاز به تنظیم متغیرهای محیطی دارید، میتوانید فایل `.env` را ایجاد کنید و در `docker-compose.yml` آن را اضافه کنید:
+
+```yaml
+services:
+ next-app:
+ env_file:
+ - .env
+```
+
+یا به صورت مستقیم:
+
+```yaml
+services:
+ next-app:
+ environment:
+ - NODE_ENV=production
+ - NEXT_PUBLIC_API_URL=https://api.example.com
+```
+
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..5ca81b6
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,52 @@
+# Stage 1: Dependencies
+FROM node:20-alpine AS deps
+RUN apk add --no-cache libc6-compat
+WORKDIR /app
+
+# Copy package files
+COPY package.json package-lock.json* yarn.lock* ./
+
+# Install dependencies
+RUN \
+ if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
+ elif [ -f package-lock.json ]; then npm ci; \
+ else echo "Lockfile not found." && exit 1; \
+ fi
+
+# Stage 2: Builder
+FROM node:20-alpine AS builder
+WORKDIR /app
+COPY --from=deps /app/node_modules ./node_modules
+COPY . .
+
+# Set environment variables for build
+ENV NEXT_TELEMETRY_DISABLED 1
+
+# Build the application
+RUN npm run build
+
+# Stage 3: Runner
+FROM node:20-alpine AS runner
+WORKDIR /app
+
+ENV NODE_ENV production
+ENV NEXT_TELEMETRY_DISABLED 1
+
+RUN addgroup --system --gid 1001 nodejs
+RUN adduser --system --uid 1001 nextjs
+
+# Copy necessary files from standalone build
+COPY --from=builder /app/public ./public
+
+# Copy standalone build files
+COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
+COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
+
+USER nextjs
+
+EXPOSE 3000
+
+ENV PORT 3000
+ENV HOSTNAME "0.0.0.0"
+
+CMD ["node", "server.js"]
diff --git a/components/content-1.tsx b/components/content-1.tsx
index 4a808e6..be584f4 100644
--- a/components/content-1.tsx
+++ b/components/content-1.tsx
@@ -51,8 +51,7 @@ export default function ContentSection() {
-
احمدرضا بدیعی، مدیرعامل
-
احمدرضا عزیزان
+
احمدرضا عزیزان، مدیر
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..810db1a
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,17 @@
+services:
+ next-app:
+ build:
+ context: .
+ dockerfile: Dockerfile
+ ports:
+ - "3000:3000"
+ environment:
+ - NODE_ENV=production
+ restart: unless-stopped
+ healthcheck:
+ test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+ start_period: 40s
+
diff --git a/next.config.ts b/next.config.ts
index f435e52..1964dc3 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -1,6 +1,7 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
+ output: 'standalone',
images: {
remotePatterns: [
{