概要
docker-compose.yml を作成して CLI からではなく Ruby からコンテナの作成などを行ってみました
ただ使った gem のバージョンが古くあまり使えなさそうな印象です
環境
- macOS 10.15.6
- docker 19.03.12
- Ruby 2.7.1p83
- docker-compose-api 1.1.8
docker-compose.yml の作成
何でも OK です
今回は nginx が立ち上がるだけの YAML ファイルを作成しました
version: '3'
services:
web:
image: nginx
ports:
- 80:80
Ruby からコンテナを立ち上げてみる
では Ruby から docker-compose.yml を使ってコンテンを立ち上げてみます
vim app.rb
require 'docker-compose'
compose = DockerCompose.load('./docker-compose.yml')
ret = compose.start
puts ret
これで nginx のコンテナが立ち上がります
コンテナの一覧を確認する
containers
を使います
ハッシュで返ってきます
require 'docker-compose'
compose = DockerCompose.load('./docker-compose.yml')
ret = compose.containers
pp ret
コンテナを停止する
stop
を使うだけです
ラベルと名前でコンテナを指定することができます
require 'docker-compose'
compose = DockerCompose.load('./docker-compose.yml')
# compose.start
ret = compose.stop
puts ret
別プロセスになるとなぜかコンテナに振られるインデックスが変わるのでその場合は start した同じプロセス内で停止しましょう
Tips: バージョンの表示など
puts DockerCompose.version
puts DockerCompose.docker_client
Tip: AttributeError: ‘ComposeVersion’ object has no attribute ‘version’
なぜか Ruby で実行すると CLI 側で docker-compose を実行できなくなりました
おそらくバージョンの違いや Ruby 側だと処理が足りていないためだと思います
AttributeError: 'ComposeVersion' object has no attribute 'version'
[2692] Failed to execute script docker-compose
最後に
既存の docker-compose.yml があればそれを簡単に Ruby から呼び出すことはできそうです
ただ残念ですが現在は gem のバージョンが古くメンテナンスもされていないようです
docker-compose v3 に対応していませんでした
また docker-compose.yml なしで docker-compose 的なことをするのはこの gem ではできないようです
0 件のコメント:
コメントを投稿