Using uv in Docker#
Running in Docker#
Dockerイメージは、利用可能なuvのビルドバージョンとともに公開されます。
container:
Installing uv#
uvは公式のDockerイメージからコピーすることでインストールできます。
または、スタンドアロンインストーラを使用して、次の操作を行います。:
FROM python:3.12-slim-bullseye
RUN apt-get update && apt-get install -y curl --no-install-recommends
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.cargo/bin/:$PATH"
これにはcurlが必要であることに注意してください。
いずれの場合も、特定のuvバージョンに固定することをお勧めします。
Installing a package#
uvがイメージにインストールされると、いくつかのパッケージのインストールに使用できます。
コンテナはすでに分離されているため、システムPython環境ではこのコンテキストを使用しても安全です。
--systemフラグを使用して、システム環境にインストールできます。:
システムPython環境をデフォルトで使用するには、UV_SYSTEM_PYTHON変数を設定します。:
または、仮想環境を作成してアクティブ化することもできます。:
RUN uv venv /opt/venv
# Use the virtual environment automatically
ENV VIRTUAL_ENV=/opt/venv
# Place entry points in the environment at the front of the path
ENV PATH="/opt/venv/bin:$PATH"
仮想環境を使用する場合は、uv呼び出しから--systemフラグを省略する必要があります。:
Installing requirements#
要件ファイルをインストールするには、それらをコンテナにコピーします。:
Installing a project#
要件とともにプロジェクトをインストールする場合、ソースコードの残りの部分から要件のコピーを分離することが賢明です。これにより、(頻繁に変更されない)プロジェクトの依存関係を、(頻繁に変更される)プロジェクト自体とは別にキャッシュできます。
COPY pyproject.toml .
RUN uv pip install -r pyproject.toml
COPY . .
RUN uv pip install -e .
Optimizations#
Using uv temporarily#
最終イメージでuvが必要ない場合は、各呼び出しでバイナリをマウントできます。
Caching#
cache mountを使用すると、ビルド間のパフォーマンスを向上させることができます。
キャッシュディレクトリの場所はuv cache dirコマンドで決定できます。
または、キャッシュを一定の場所に設定することもできます。:
キャッシュをマウントしない場合は、--no-cacheフラグを使用してイメージのサイズを小さくすることができます。