Bedrud مستندات

Bedrud یک Dockerfile چندمرحله‌ای برای ساخت و اجرا در کانتینرها فراهم می‌کند.

شروع سریع

# ساخت
docker build -t bedrud .
 
# اجرا
docker run -d --name bedrud \
  -p 8090:8090 \
  -p 7880:7880 \
  -p 50000-60000:50000-60000/udp \
  bedrud

نمای کلی Dockerfile

Dockerfile از سه مرحله برای به حداقل رساندن اندازه تصویر نهایی استفاده می‌کند:

مرحله ۱: ساخت فرانت‌اند

FROM node:22-alpine AS frontend
RUN npm install -g bun
WORKDIR /build/apps/web
COPY apps/web/package.json apps/web/bun.lock ./
RUN bun install --frozen-lockfile
COPY apps/web/ ./
RUN bun run build:embed

Bun را نصب می‌کند، برنامه React را از پیش رندر SSR می‌کند و دارایی‌ها را به server/frontend/ کپی می‌کند.

مرحله ۲: ساخت سرور

FROM golang:1.24-alpine AS backend
RUN apk add --no-cache gcc musl-dev
WORKDIR /build/server
COPY server/go.mod server/go.sum ./
RUN go mod download
COPY server/ ./
COPY --from=frontend /build/server/frontend ./frontend/
RUN CGO_ENABLED=1 GOOS=linux go build -ldflags="-s -w" -o /bedrud ./cmd/bedrud/main.go
# CGO برای SQLite مورد نیاز است (از پیوندهای C استفاده می‌کند)

باینری Go را با فرانت‌اند جاسازی‌شده کامپایل می‌کند. CGO برای پشتیبانی SQLite فعال است.

مرحله ۳: زمان اجرا

FROM alpine:3.21
RUN apk add --no-cache ca-certificates tzdata
COPY --from=backend /bedrud /usr/local/bin/bedrud
EXPOSE 8090 7880
ENTRYPOINT ["bedrud"]
CMD ["run"]

تصویر Alpine حداقلی با فقط باینری، گواهی‌های CA و داده‌های منطقه زمانی.

پورت‌ها

پورتسرویسپروتکل
8090API + Web UIHTTP
7880LiveKitWebSocket + HTTP
50000-60000رسانه RTCUDP

برای جریان‌های رسانه LiveKit، ممکن است نیاز به باز کردن محدوده پورت UDP RTC (پیش‌فرض: 50000-60000) نیز داشته باشید.

حجم‌ها

یک حجم برای داده‌های پایدار سوار کنید:

docker run -d \
  --name bedrud \
  -p 8090:8090 \
  -p 7880:7880 \
  -v bedrud-data:/var/lib/bedrud \
  bedrud

پیکربندی

ارسال یک فایل پیکربندی سفارشی:

docker run -d \
  --name bedrud \
  -p 8090:8090 \
  -p 7880:7880 \
  -v /path/to/config.yaml:/etc/bedrud/config.yaml \
  -v bedrud-data:/var/lib/bedrud \
  bedrud run --config /etc/bedrud/config.yaml

یا از متغیرهای محیطی استفاده کنید:

docker run -d \
  --name bedrud \
  -p 8090:8090 \
  -p 7880:7880 \
  -e JWT_SECRET=my-production-secret \
  -e LIVEKIT_API_KEY=prodkey \
  -e LIVEKIT_API_SECRET=prodsecret \
  bedrud

تصاویر از پیش ساخته‌شده

تصاویر Docker در هر نسخه به GitHub Container Registry منتشر می‌شوند:

# آخرین نسخه
docker pull ghcr.io/bedrud-ir/bedrud:latest
 
# نسخه خاص
docker pull ghcr.io/bedrud-ir/bedrud:v1.0.0

مثال Docker Compose

services:
  bedrud:
    image: ghcr.io/bedrud-ir/bedrud:latest
    ports:
      - "8090:8090"
      - "7880:7880"
    volumes:
      - bedrud-data:/var/lib/bedrud
      - ./config.yaml:/etc/bedrud/config.yaml
    environment:
      - JWT_SECRET=change-me
    restart: unless-stopped
 
volumes:
  bedrud-data:

مشاهده همچنین