Add project scaffolding and documentation
Add .env.example with configuration for database, Redis, security, SMTP, workers, and plugins. Add .gitignore for Python, Node.js, Next.js, Docker volumes, and IDE files. Add MIT License. Update README.md with feature overview, quick start guide, architecture description, plugin system documentation, security details, backup/restore instructions, and developer setup. Add Alembic configuration files and placeholder directories for API, web, worker, and plugin components
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
FROM python:3.12-slim-bookworm AS base
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PIP_NO_CACHE_DIR=1 \
|
||||
POETRY_NO_INTERACTION=1 \
|
||||
POETRY_VIRTUALENVS_CREATE=false
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
gcc \
|
||||
libpq-dev \
|
||||
curl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN pip install --no-cache-dir poetry
|
||||
|
||||
COPY pyproject.toml poetry.lock* /app/
|
||||
COPY apps/api /app/apps/api
|
||||
COPY packages/shared /app/packages/shared
|
||||
COPY plugins /app/plugins
|
||||
|
||||
RUN poetry install --no-root
|
||||
|
||||
RUN apt-get purge -y gcc && apt-get autoremove -y
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD ["python", "-m", "uvicorn", "apps.api.src.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
@@ -0,0 +1,41 @@
|
||||
FROM node:20-alpine AS base
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN apk add --no-cache libc6-compat
|
||||
|
||||
FROM base AS deps
|
||||
COPY package.json pnpm-lock.yaml* pnpm-workspace.yaml* /app/
|
||||
COPY apps/web/package.json /app/apps/web/
|
||||
COPY packages/shared/package.json /app/packages/shared/
|
||||
COPY packages/ui/package.json /app/packages/ui/
|
||||
COPY packages/plugin-sdk/package.json /app/packages/plugin-sdk/
|
||||
|
||||
RUN npm install -g pnpm && pnpm install --frozen-lockfile
|
||||
|
||||
FROM base AS builder
|
||||
COPY --from=deps /app/node_modules /app/node_modules
|
||||
COPY . /app
|
||||
|
||||
RUN npm install -g pnpm && pnpm --filter @nexadash/web build
|
||||
|
||||
FROM base AS runner
|
||||
ENV NODE_ENV=production
|
||||
|
||||
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs
|
||||
|
||||
COPY --from=builder /app/apps/web/public /app/apps/web/public
|
||||
COPY --from=builder /app/apps/web/.next/standalone /app/apps/web/
|
||||
COPY --from=builder /app/apps/web/.next/static /app/apps/web/.next/static
|
||||
COPY --from=builder /app/apps/web/healthcheck.js /app/apps/web/healthcheck.js
|
||||
|
||||
USER nextjs
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
ENV PORT=3000
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
|
||||
WORKDIR /app/apps/web
|
||||
|
||||
CMD ["node", "server.js"]
|
||||
@@ -0,0 +1,27 @@
|
||||
FROM python:3.12-slim-bookworm AS base
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PIP_NO_CACHE_DIR=1 \
|
||||
POETRY_NO_INTERACTION=1 \
|
||||
POETRY_VIRTUALENVS_CREATE=false
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
gcc \
|
||||
libpq-dev \
|
||||
curl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN pip install --no-cache-dir poetry
|
||||
|
||||
COPY pyproject.toml poetry.lock* /app/
|
||||
COPY apps/api /app/apps/api
|
||||
COPY apps/worker /app/apps/worker
|
||||
COPY packages/shared /app/packages/shared
|
||||
COPY plugins /app/plugins
|
||||
|
||||
RUN poetry install --no-root
|
||||
|
||||
CMD ["celery", "-A", "apps.worker.src.celery_app", "worker", "-l", "info", "-c", "4"]
|
||||
Reference in New Issue
Block a user