Skip to content

Commit

Permalink
Fix: [Installer] NVIDIA GPU が利用できない環境で Docker を使ってインストールできない問題を修正
Browse files Browse the repository at this point in the history
  • Loading branch information
tsukumijima committed Oct 12, 2022
1 parent 4353f22 commit e6a190c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 11 deletions.
12 changes: 6 additions & 6 deletions docker-compose.example.yaml
Expand Up @@ -37,11 +37,11 @@ services:
# NVEncC を動作させる (NVIDIA GPU にアクセスする) ために必要な設定
# NVEncC を動作させるには、別途 NVIDIA Graphics Driver と NVIDIA Container Toolkit (nvidia-docker2) のインストールが必要です。
# コメントを解除してこの設定を有効にすると、NVIDIA GPU が搭載されていない環境では KonomiTV サーバーを起動できなくなります。
deploy:
resources:
reservations:
devices:
# - driver: nvidia
# capabilities: [compute, utility, video]
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# capabilities: [compute, utility, video]

# ==================== ↑↑↑↑↑ ここまでユーザー設定 ↑↑↑↑↑ ====================
25 changes: 20 additions & 5 deletions installer/Installer.py
Expand Up @@ -550,14 +550,29 @@ def Installer(version: str) -> None:

# NVEncC が利用できそうな場合、NVIDIA GPU が Docker コンテナ内で使えるように docker-compose.yaml の当該記述をコメントアウト
## NVIDIA GPU が使える環境以外でコメントアウトすると
## 正攻法で YAML でコメントアウトする方法が思いつかなかったので、正規表現でゴリ押し……
## 正攻法で YAML でコメントアウトする方法が思いつかなかったので、ゴリ押しで置換……
if '✅利用できます' in nvencc_available:
with open(install_path / 'docker-compose.yaml', mode='r', encoding='utf-8') as file:
text = file.read()
replaced_text_1 = ' - driver: nvidia'
replaced_text_2 = ' capabilities: [compute, utility, video]'
text = re.sub(r'.*?#.*?- driver: nvidia', replaced_text_1, text)
text = re.sub(r'.*?#.*? capabilities: \[compute, utility, video\]', replaced_text_2, text)
# デフォルト (置換元) の config.yaml の記述
old_text = (
' # deploy:\n'
' # resources:\n'
' # reservations:\n'
' # devices:\n'
' # - driver: nvidia\n'
' # capabilities: [compute, utility, video]'
)
# 置換後の config.yaml の記述
new_text = (
' deploy:\n'
' resources:\n'
' reservations:\n'
' devices:\n'
' - driver: nvidia\n'
' capabilities: [compute, utility, video]'
)
text = text.replace(old_text, new_text)
with open(install_path / 'docker-compose.yaml', mode='w', encoding='utf-8') as file:
file.write(text)

Expand Down

0 comments on commit e6a190c

Please sign in to comment.