Код: Выделить всё
# Use a Python image with uv pre-installed
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
# Install the project into `/app`
WORKDIR /app
COPY pyproject.toml uv.lock ./
# Enable bytecode compilation
ENV UV_COMPILE_BYTECODE=1
# Copy from the cache instead of linking since it's a mounted volume
ENV UV_LINK_MODE=copy
# Print Python and uv version for debugging
RUN python --version && which python && uv --version
# Install dependencies
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
uv sync --locked --no-install-project --no-dev
# # Then, add the rest of the project source code and install it
# # Installing separately from its dependencies allows optimal layer caching
COPY . /app
# RUN --mount=type=cache,target=/root/.cache/uv \
# uv sync --locked --no-dev
# Place executables in the environment at the front of the path
ENV PATH="/app/.venv/bin:$PATH"
# Reset the entrypoint, don't invoke `uv`
ENTRYPOINT []
# Run the python script using `uv run`
CMD ["uv", "run", "services/trades/src/trades/main.py"]
Код: Выделить всё
5.509 error: The lockfile at `uv.lock` needs to be updated, but `--locked` was provided. To update the lockfile, run `uv lock`.
------
trades.Dockerfile:19
--------------------
18 | # Install dependencies
19 | >>> RUN --mount=type=cache,target=/root/.cache/uv \
20 | >>> --mount=type=bind,source=uv.lock,target=uv.lock \
21 | >>> --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
22 | >>> uv sync --locked --no-install-project --no-dev
23 |
--------------------
ERROR: failed to solve: process "/bin/sh -c uv sync --locked --no-install-project --no-dev" did not complete successfully: exit code: 2
make: *** [Makefile:5: build] Error 1
Я также проверил версию базового изображения Python и сравнивал с версией локального проекта Python, и они одинаковые. uv.lock файл из контейнера полагаю и сравнил его с файлом uv.lock в папке локального проекта. Оба файла абсолютно одинаковы.
Я все еще хочу построить изображение, используя тег -заблокированный , чтобы гарантировать стабильную среду между контейнером Docker и локальной папкой.
Любые предложения, пожалуйста?>
Подробнее здесь: https://stackoverflow.com/questions/796 ... e-the-lock