# Dockerfile for Chat Service FROM python:3.12-slim AS builder WORKDIR /build # Install Poetry and export plugin RUN pip install --no-cache-dir poetry==2.2.1 poetry-plugin-export # Copy dependency files COPY pyproject.toml poetry.lock ./ # Export dependencies RUN poetry config virtualenvs.create false \ && poetry export -f requirements.txt --output requirements.txt --without-hashes # Runtime stage FROM python:3.12-slim LABEL maintainer="automation-team@company.com" LABEL description="Datacenter Documentation Chat Server" # Install system dependencies RUN apt-get update && apt-get install -y \ curl \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # Copy requirements from builder COPY --from=builder /build/requirements.txt . # Install Python dependencies RUN pip install --no-cache-dir -r requirements.txt # Copy application code and package definition COPY src/ /app/src/ COPY config/ /app/config/ COPY scripts/ /app/scripts/ COPY output/ /app/output/ COPY pyproject.toml README.md /app/ # Install poetry-core (required for install with pyproject.toml) RUN pip install --no-cache-dir poetry-core # Install the package RUN pip install --no-cache-dir /app # Set PYTHONPATH to ensure module can be imported ENV PYTHONPATH=/app/src:$PYTHONPATH # Create necessary directories RUN mkdir -p /app/logs /app/data /app/output /app/scripts # Create non-root user and set permissions RUN useradd -m -u 1000 appuser && \ chown -R appuser:appuser /app && \ chmod +x /app/scripts/*.sh 2>/dev/null || true && \ chmod +x /app/scripts/*.py 2>/dev/null || true USER appuser # Expose chat port EXPOSE 8001 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8001/health || exit 1 # Run the chat server CMD ["python", "-m", "datacenter_docs.chat.main"]