singularity/ Singularity\343\201\247uv\343\201\253\343\202\210\343\202\213Python\347\222\260\345\242\203\343\202\222\346\247\213\347\257\211\343\201\231\343\202\213 .md
... ...
@@ -0,0 +1,72 @@
1
+```
2
+BootStrap: docker
3
+From: nvidia/cuda@sha256:29e5e3425e2e0f5a4e97c9fb4695ba4887cd78210a43cf94c3bcafc6ab01c5e6 # nvidia/cuda:12.9.1-base-ubuntu24.04
4
+
5
+%setup
6
+ setup_dir="${SINGULARITY_ROOTFS}/usr/local/python_env"
7
+ mkdir -p "${setup_dir}"
8
+ mkdir -p "${setup_dir}/.cache/uv"
9
+ cp "./uv.lock" "${setup_dir}/uv.lock"
10
+ cp "./pyproject.toml" "${setup_dir}/pyproject.toml"
11
+
12
+%post
13
+ export DEBIAN_FRONTEND=noninteractive
14
+ export TZ=Asia/Tokyo
15
+
16
+ apt update && \
17
+ apt install -y \
18
+ tzdata \
19
+ locales \
20
+ curl \
21
+ git \
22
+ tk-dev \
23
+ htop \
24
+ sqlite3 \
25
+ language-pack-ja \
26
+ libhdf5-serial-dev \
27
+ python3 \
28
+ python3-pip \
29
+ python3-venv \
30
+ software-properties-common \
31
+ wget \
32
+ nvtop
33
+
34
+ # インストール先のベースディレクトリを設定
35
+ export install_base_dir="/usr/local"
36
+
37
+ # ロケールをセットアップ(日本語やUTF-8対応のため)
38
+ localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
39
+
40
+ # Python仮想環境・uv.lock配置ディレクトリのパスを設定
41
+ export python_env_install_dir="${install_base_dir}/python_env"
42
+
43
+ # 作業ディレクトリを移動
44
+ cd "${python_env_install_dir}"
45
+
46
+ # uv公式インストーラでuvをインストール
47
+ curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="${install_base_dir}/bin" sh
48
+
49
+ # uv.lockに従いパッケージをインストール(キャッシュ無効化)
50
+ cd "${python_env_install_dir}"
51
+ uv sync \
52
+ --locked \
53
+ --compile-bytecode \
54
+ --cache-dir "${python_env_install_dir}/.cache/uv"
55
+
56
+ # APTキャッシュ等のクリーンアップ
57
+ apt clean
58
+ rm -rf /var/lib/apt/lists/*
59
+
60
+%runscript
61
+ #!/bin/bash
62
+ set -euo pipefail
63
+
64
+ source /usr/local/python_env/.venv/bin/activate
65
+ exec "$@"
66
+
67
+%environment
68
+ export LANG=en_US.utf8
69
+ export DEBIAN_FRONTEND=noninteractive
70
+ export TZ=Asia/Tokyo
71
+
72
+```
... ...
\ No newline at end of file