diff --git a/docs/guides/integration/docker.md b/docs/guides/integration/docker.md index 077eda788..90f46e7a2 100644 --- a/docs/guides/integration/docker.md +++ b/docs/guides/integration/docker.md @@ -50,9 +50,44 @@ Or, with the installer: ADD https://astral.sh/uv/0.2.37/install.sh /uv-installer.sh ``` -## Installing a package +## Installing a project -Once uv is installed in an image, it can be used to install some packages. +If you're using uv to manage your project, you can copy it into the image and install it: + +```dockerfile title="Dockerfile" +# Copy the project into the image +ADD . /app +WORKDIR /app + +# Sync the project into a new environment +RUN uv sync +``` + +Once the project is installed, you can either _activate_ the virtual environment: + +```dockerfile title="Dockerfile" +# Use the virtual environment automatically +ENV VIRTUAL_ENV=/app/.venv +# Place executables in the environment at the front of the path +ENV PATH="/app/.venv/bin:$PATH" +``` + +Or, you can use `uv run` to run commands in the environment: + +```dockerfile +RUN uv run /app/some_script.py +``` + +And, to start your application by default: + +```dockerfile +# Presuming there is a `my_app` command provided by the project +CMD ["uv", "run", "my_app"] +``` + +## Using the pip interface + +### Installing a package The system Python environment is safe to use this context, since a container is already isolated. The `--system` flag can be used to install in the system environment: @@ -83,7 +118,7 @@ When using a virtual environment, the `--system` flag should be omitted from uv RUN uv pip install ruff ``` -## Installing requirements +### Installing requirements To install requirements files, copy them into the container: @@ -92,7 +127,7 @@ COPY requirements.txt . RUN uv pip install -r requirements.txt ``` -## Installing a project +### Installing a project When installing a project alongside requirements, it is prudent to separate copying the requirements from the rest of the source code. This allows the dependencies of the project (which do not change