@@ -422,11 +422,13 @@ RUN sh /uv-installer.sh && rm /uv-installer.sh
422422
423423ENV PATH="/root/.local/bin:$PATH"
424424
425+ # Create virtual environment and download Python
426+ RUN uv venv -p {python_version}
427+
425428COPY . ./
426429
427430RUN --mount=type=cache,target=/root/.cache/uv \
428- uv venv -p {python_version} \
429- && uv sync --locked --no-dev --no-editable
431+ uv sync --locked --no-dev --no-editable
430432
431433
432434# Build production stage
@@ -557,11 +559,12 @@ RUN : \
557559 && apt-get clean \
558560 && rm -rf /var/lib/apt/lists/*
559561
562+ # Create virtual environment
563+ RUN python{python_version} -m venv .venv
564+
560565COPY . ./
561566
562- RUN : \
563- && python{python_version} -m venv .venv \
564- && .venv/bin/python -m pip install -r requirements.txt
567+ RUN .venv/bin/python -m pip install -r requirements.txt
565568
566569
567570# Build production stage
@@ -638,22 +641,24 @@ RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --de
638641
639642ENV PATH="/root/.local/bin:/root/.cargo/bin:$PATH"
640643
641- COPY Cargo.toml Cargo.lock ./
644+ # Create virtual environment and download Python
645+ RUN uv venv -p {python_version}
642646
643- COPY pyproject.toml uv.lock ./
647+ COPY pyproject.toml Cargo.toml Cargo.lock README.md LICENSE ./
648+ COPY src/ ./src
649+ RUN mkdir {source_dir}
644650
645- RUN --mount=type=cache,target=/root/.cache/uv \
646- uv venv -p {python_version} \
647- && uv sync --locked --no-dev --no-install-project --no-editable
651+ RUN --mount=type=cache,target=/app/target/ \
652+ --mount=type=cache,target=/usr/local/cargo/git/db \
653+ --mount=type=cache,target=/usr/local/cargo/registry/ \
654+ uv tool run maturin develop -r
648655
649- COPY . ./
656+ COPY uv.lock ./
650657
651658RUN --mount=type=cache,target=/root/.cache/uv \
652- --mount=type=cache,target=/app/target/ \
653- --mount=type=cache,target=/usr/local/cargo/git/db \
654- --mount=type=cache,target=/usr/local/cargo/registry/ \
655- uv sync --locked --no-dev --no-editable \
656- && uv tool run maturin develop -r
659+ uv sync --locked --no-dev --no-install-project
660+
661+ COPY . /app
657662
658663
659664# Build production stage
@@ -723,13 +728,25 @@ RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --de
723728
724729ENV PATH="/root/.local/bin:/root/.cargo/bin:$PATH"
725730
731+ # Create virtual environment
732+ RUN python{python_version} -m venv .venv
733+
734+ COPY pyproject.toml Cargo.toml Cargo.lock README.md LICENSE ./
735+ COPY src/ ./src
736+ RUN mkdir {source_dir}
737+
738+ RUN --mount=type=cache,target=/app/target/ \
739+ --mount=type=cache,target=/usr/local/cargo/git/db \
740+ --mount=type=cache,target=/usr/local/cargo/registry/ \
741+ uv tool run maturin develop -r
742+
726743COPY requirements.txt ./
727744
728- RUN : \
729- && python{python_version} -m venv .venv \
730- && .venv/bin/python -m pip install -r requirements.txt
745+ RUN --mount=type=cache,target=/root/.cache/uv \
746+ .venv/bin/python -m pip install -r requirements.txt
747+
748+ COPY . /app
731749
732- COPY . ./
733750
734751RUN --mount=type=cache,target=/usr/local/cargo/git/db \
735752 --mount=type=cache,target=/usr/local/cargo/registry/ \
0 commit comments