# Profitina Laundry, Flask track, as a container image.
# Build from the folder ProfitinaLaundry/ (so that App/ and this deploy/ are inside):
#   docker build -f Code_new/Chapter14/deploy/Dockerfile -t profitina-laundry .
#   docker run -d -p 127.0.0.1:6143:6143 -e SECRET_KEY=... \
#              -v laundry-data:/app/python-flask/instance profitina-laundry
FROM python:3.14-slim

# No .pyc files, unbuffered logs (docker logs shows them at once).
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 \
    LAUNDRY_TRACK_DIR=/app/python-flask LAUNDRY_BIND=0.0.0.0:6143

WORKDIR /app
COPY App/python-flask/requirements.txt python-flask/requirements.txt
RUN pip install --no-cache-dir -r python-flask/requirements.txt gunicorn==26.2.0

COPY App/python-flask/laundry python-flask/laundry
COPY App/database database
COPY Code_new/Chapter14/deploy/wsgi.py Code_new/Chapter14/deploy/gunicorn.conf.py deploy/

# Run as an ordinary user, never as root.
RUN useradd --create-home laundry \
 && mkdir -p python-flask/instance \
 && cp database/laundry.db python-flask/instance/laundry.db \
 && chown -R laundry python-flask/instance
USER laundry

WORKDIR /app/python-flask
EXPOSE 6143
CMD ["gunicorn", "-c", "/app/deploy/gunicorn.conf.py"]
