c9d9c0f9dd
Add password-protected setup page (/api/setup) for DB initialization, admin creation, and demo data seeding. Dockerize the full stack with server, client, nginx reverse proxy, and MySQL services. Add project README with architecture overview, quick start, and VPS deployment guide. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
26 lines
701 B
Docker
26 lines
701 B
Docker
FROM python:3.11-slim AS base
|
|
|
|
# Installa Node.js per Tailwind CSS build
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
curl \
|
|
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
|
|
&& apt-get install -y --no-install-recommends nodejs \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
COPY requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt gunicorn
|
|
|
|
COPY . .
|
|
|
|
# Build Tailwind CSS
|
|
RUN npx tailwindcss -i static/css/input.css -o static/css/tailwind.css --minify
|
|
|
|
# Compile Flask-Babel translations
|
|
RUN pybabel compile -d translations
|
|
|
|
EXPOSE 5000
|
|
|
|
CMD ["gunicorn", "--workers", "2", "--bind", "0.0.0.0:5000", "--factory", "app:create_app"]
|