Files
mtgonline/backend/Dockerfile
T
akadmin ad037de48d Phase 9: Docker Deployment Setup - docker-compose with logging and port mapping
- Updated docker-compose.yml with port 8990:8000 mapping
- Fixed environment variables to match current .env configuration
- Added third PostgreSQL database (postgres_mirror) for mirror/sync data
- Added robust JSON file logging for all containers (10MB max, 3 files)
- Updated PostgreSQL credentials to use postgres/postgres
- Added health checks for all services
- Enhanced Dockerfile with logging environment variables
- Created .env.docker documentation file with deployment checklist
- Docker build verified successfully
2026-08-18 03:53:35 +00:00

69 lines
1.8 KiB
Docker

# Build stage
FROM python:3.12-slim as builder
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
RUN groupadd -r appuser && useradd -r -g appuser -d /app -s /sbin/nologin appuser
COPY requirements.txt .
RUN pip install --no-cache-dir --user -r requirements.txt
# Application stage
FROM python:3.12-slim
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
libpq5 \
curl \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /root/.local /app/.local
ENV PATH=/app/.local/bin:$PATH
RUN groupadd -r appuser && useradd -r -g appuser -d /app -s /sbin/nologin appuser
RUN mkdir -p /app/data /app/uploads /app/logs /app/scripts /app/alembic/versions && chown -R appuser:appuser /app
# Copy application code
COPY --chown=appuser:appuser app/ ./app/
# Copy Alembic configuration
COPY --chown=appuser:appuser alembic.ini ./
COPY --chown=appuser:appuser alembic/ ./alembic/
# Copy interaction pipeline scripts
COPY --chown=appuser:appuser scripts/ ./scripts/
RUN chmod +x /app/scripts/*.py
COPY --chown=appuser:appuser .env.example ./.env.example
COPY --chown=appuser:appuser pyproject.toml ./
# Python environment variables for proper logging
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONPATH=/app
# Logging configuration
ENV MTG_LOG_LEVEL=INFO
ENV MTG_LOG_FORMAT=json
# Create logging directory with proper permissions
RUN mkdir -p /app/logs && chown appuser:appuser /app/logs
HEALTHCHECK --interval=30s --timeout=20s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8000/health || exit 1
USER appuser
EXPOSE 8000
# Run migrations before starting the app
CMD ["sh", "-c", "python -m alembic upgrade head && python -m uvicorn app.main:app --host 0.0.0.0 --port 8000"]