2021年3月22日月曜日

Python で docker stack deploy する場合は docker-py ではなく pipenv install python-on-whales を使う必要がある

概要

docker-py は stack コマンド系をサポートしていません
そもそも stack コマンドはクライアント側の機能なので docker-py になくても納得なのは納得です
どうしても python から stack を使いたい場合は CLI を直接コールするか python-on-whales というライブラリを使います
今回は python-on-whales の簡単なサンプルを紹介します
python-on-whales もまだ未成熟なプロジェクトなので機能の未実装やバグなどは含まれている想定です

環境

  • Ubuntu 18.04
  • docker 20.10.5
  • Python 3.8.3
  • python-on-whales 0.15.0

インストール

  • pipenv install python-on-whales

サンプルコード

  • vim test.py
from python_on_whales import docker

output = docker.stack.deploy("from_python", "/path/to/docker-compose.yml")
print(output)

stacks = docker.stack.list()
for stack in stacks:
    print(stack)

processes = docker.stack.ps("from_python")
for process in processes:
    print(vars(process))

services = docker.stack.services("from_python")
for service in services:
    print(vars(service))
output = docker.stack.remove("from_python")
print(output)

実行

  • pipenv run python test.py

リモートホストに実行したい場合は

  • DOCKER_HOST=192.168.100.10:2376 pipenv run python test.py

という感じで実行します

最後に

まだまだ開発段階なので機能が揃っていません
ですが自分で CLI を組んでやるよりかは良さそうな気がします
今後の成長に期待して心中するのはありかもしれません
あとは stack 系だけこれを使ってそれ以外の docker API は docker-py を使うというのもありだとは思います

0 件のコメント:

コメントを投稿