Ekimart078 commited on
Commit
5b71d9e
·
1 Parent(s): 858bf77

Refactor Dockerfile to streamline image build process, replace Poetry with pip, and simplify environment setup.

Browse files
Files changed (1) hide show
  1. Dockerfile +18 -47
Dockerfile CHANGED
@@ -2,30 +2,24 @@ FROM python:3.13.0a3-slim-bookworm AS builder
2
 
3
  ENV PYTHONUNBUFFERED=1 \
4
  PYTHONDONTWRITEBYTECODE=1 \
5
- PIP_NO_CACHE_DIR=on \
6
- PIP_DISABLE_PIP_VERSION_CHECK=1 \
7
- PIP_ROOT_USER_ACTION=ignore \
8
- POETRY_VERSION=1.8.2 \
9
- POETRY_HOME="/opt/poetry" \
10
- POETRY_NO_INTERACTION=1
11
 
12
  RUN apt-get update -qq && \
13
  apt-get install -y --no-install-recommends \
14
- curl \
15
  build-essential \
16
  pkg-config \
17
- libssl-dev \
18
- && apt-get clean \
19
- && rm -rf /var/lib/apt/lists/*
20
-
21
- RUN curl -sSL https://install.python-poetry.org | python3 - && \
22
- chmod +x /opt/poetry/bin/poetry
23
 
24
  WORKDIR /app
25
 
26
- COPY pyproject.toml poetry.lock ./
27
 
28
- RUN /opt/poetry/bin/poetry install --only main --no-root --no-interaction --no-ansi -v
 
 
29
 
30
  FROM python:3.13.0a3-slim-bookworm AS runtime
31
 
@@ -33,26 +27,18 @@ ENV PYTHONUNBUFFERED=1 \
33
  PYTHONDONTWRITEBYTECODE=1 \
34
  PATH="/venv/bin:$PATH" \
35
  PYTHONPATH="/app" \
36
- UWSGI_HTTP=:8000 \
37
- UWSGI_MASTER=1 \
38
- UWSGI_HTTP_AUTO_CHUNKED=1 \
39
- UWSGI_HTTP_KEEPALIVE=1 \
40
- UWSGI_LAZY_APPS=1 \
41
- UWSGI_WSGI_ENV_BEHAVIOR=holy
42
 
43
  RUN apt-get update -qq && \
44
  apt-get install -y --no-install-recommends \
45
  libssl3 \
46
- ca-certificates \
47
- && apt-get clean \
48
- && rm -rf /var/lib/apt/lists/* \
49
- && groupadd -r appgroup --gid=1000 \
50
- && useradd -r -g appgroup --uid=1000 --create-home --shell=/bin/false appuser
51
-
52
- RUN python -m venv /venv
53
 
54
- COPY --from=builder --chown=appuser:appgroup /root/.cache /home/appuser/.cache
55
- COPY --from=builder --chown=appuser:appgroup /app /app
56
  COPY --from=builder --chown=appuser:appgroup /venv /venv
57
 
58
  USER appuser:appgroup
@@ -60,22 +46,7 @@ WORKDIR /app
60
 
61
  COPY --chown=appuser:appgroup . .
62
 
63
- RUN echo "[uwsgi]\n\
64
- module = main:app\n\
65
- callable = app\n\
66
- chdir = /app\n\
67
- processes = 2\n\
68
- threads = 2\n\
69
- enable-threads = true\n\
70
- lazy-apps = true\n\
71
- master = true\n\
72
- http-auto-chunked = true\n\
73
- http-keepalive = true\n\
74
- vacuum = true\n\
75
- die-on-term = true\n\
76
- need-app = true" > uwsgi.ini
77
-
78
- EXPOSE 7860
79
 
80
  ENTRYPOINT ["python", "-m", "uvicorn"]
81
- CMD ["main:app", "--host", "0.0.0.0", "--port", "7860"]
 
2
 
3
  ENV PYTHONUNBUFFERED=1 \
4
  PYTHONDONTWRITEBYTECODE=1 \
5
+ PIP_NO_CACHE_DIR=off \
6
+ PIP_DISABLE_PIP_VERSION_CHECK=on
 
 
 
 
7
 
8
  RUN apt-get update -qq && \
9
  apt-get install -y --no-install-recommends \
 
10
  build-essential \
11
  pkg-config \
12
+ libssl-dev && \
13
+ apt-get clean && \
14
+ rm -rf /var/lib/apt/lists/*
 
 
 
15
 
16
  WORKDIR /app
17
 
18
+ COPY requirements.txt .
19
 
20
+ RUN python -m venv /venv && \
21
+ /venv/bin/pip install --no-cache-dir --upgrade pip wheel setuptools && \
22
+ /venv/bin/pip install --no-cache-dir -r requirements.txt
23
 
24
  FROM python:3.13.0a3-slim-bookworm AS runtime
25
 
 
27
  PYTHONDONTWRITEBYTECODE=1 \
28
  PATH="/venv/bin:$PATH" \
29
  PYTHONPATH="/app" \
30
+ PORT=7860
 
 
 
 
 
31
 
32
  RUN apt-get update -qq && \
33
  apt-get install -y --no-install-recommends \
34
  libssl3 \
35
+ ca-certificates && \
36
+ apt-get clean && \
37
+ rm -rf /var/lib/apt/lists/* && \
38
+ # Création d'un utilisateur non-root
39
+ groupadd -r appgroup --gid=1000 && \
40
+ useradd -r -g appgroup --uid=1000 --create-home --shell=/bin/false appuser
 
41
 
 
 
42
  COPY --from=builder --chown=appuser:appgroup /venv /venv
43
 
44
  USER appuser:appgroup
 
46
 
47
  COPY --chown=appuser:appgroup . .
48
 
49
+ EXPOSE ${PORT}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
  ENTRYPOINT ["python", "-m", "uvicorn"]
52
+ CMD ["main:app", "--host", "0.0.0.0", "--port", "${PORT}"]