diff --git a/image/pip b/image/pip
index ff099e5629358eba95060d3931fe30a05f57d1ba..9ce535682bcf68159e4c1c1c54ca43ce83f1a14e 100644
--- a/image/pip
+++ b/image/pip
@@ -9,10 +9,15 @@ RUN pip install "poetry>=1.8,<2.0"
WORKDIR /silkaj
-# Copy source tree
+# Copy pyproject.toml and install dependencies
+# So this dependencies installation layer
+# does not change when the sources changes
+# https://python-poetry.org/docs/faq/#poetry-busts-my-docker-cache-because-it-requires-me-to-copy-my-source-files-in-before-installing-3rd-party-dependencies
+COPY pyproject.toml .
+RUN poetry install --only main --no-root
+
+# Copy source tree, install and build Silkaj
COPY ./ ./
-
-# Install Silkaj
RUN poetry install --only main --extras deathreaper
RUN poetry build
diff --git a/image/poetry b/image/poetry
index 759e324da4de0221941f32277968404ffb723f5f..96eb0d39094bb8fc0e721e65698d8efafea800aa 100644
--- a/image/poetry
+++ b/image/poetry
@@ -6,6 +6,13 @@ FROM registry.duniter.org/docker/python3/poetry/${PYTHON_VERS}:latest AS build
WORKDIR /silkaj
+# Copy pyproject.toml and install dependencies
+# So this dependencies installation layer
+# does not change when the sources changes
+# https://python-poetry.org/docs/faq/#poetry-busts-my-docker-cache-because-it-requires-me-to-copy-my-source-files-in-before-installing-3rd-party-dependencies
+COPY pyproject.toml .
+RUN poetry install --only main --no-root
+
# Copy source tree
COPY ./ ./
@@ -16,7 +23,6 @@ RUN poetry install --only main --extras deathreaper
# Final Stage
# ------------------------------------------------------------------------------
FROM registry.duniter.org/docker/python3/poetry/${PYTHON_VERS}:latest
-ARG PYTHON_VERS
# Create silkaj group and user
RUN groupadd -g 1111 silkaj && \