Docker ComposeをWeb UIで管理する[Dockge]
はじめに
今回は、複数のDocker Composeを簡単に管理できるツール、Dockgeを紹介します。
現代のソフトウェア開発では、コンテナ技術を使ったアプリケーションのデプロイと管理が一般的です。しかし、複数のアプリケーションを自宅などでセルフホストする場合、Docker Composeの管理が煩雑になることも少なくありません。そこで登場するのがDockgeです。Dockgeは、Docker Composeの管理をGUI上で直感的に行える便利なツールです。
Dockgeとは
Dockgeは、セルフホスト型のDocker Compose管理ツールです。Web UIからDocker Composeの起動、停止、更新などを簡単に行うことができます。Dockgeは、モニタリングツール「Uptime Kuma」の作者であるLouis Lam氏によって開発されており、そのため操作感もUptime Kumaと似ています。類似するツールにportainer.ioがありますが、DockgeはDocker Composeの管理に特化しており、よりシンプルで直感的に使えるのが特徴です。
DockgeのUI - GitHubリポジトリより
なお「Dockge」の読み方についてはFAQに以下のような記述があります。
"Dockge" is a coinage word which is created by myself. I originally hoped it sounds like
Dodge
, but apparently many people called itDockage
, it is also acceptable.
(以下訳文)
"Dockge"は私の造語です。Dodge
のような響きを想定していましたが、どうやら多くの人がDockage
と発音しているようなのでこれも許容範囲です。
主要な機能
compose.yaml
の管理
Docker Composeの新規作成・編集・停止・再起動・削除・イメージの更新を簡単な操作で行えます。
homepageのイメージを更新する様子
Webターミナル
ブラウザ上から直接コンテナ内でコマンドを実行できます。
Label Studioのコンテナ内に入りls
する様子
docker run
コマンドをcompose.yaml
に変換
docker run ...
コマンドを入力すると、それを元に自動でcompose.yaml
ファイルを生成します。
使用するプロダクトにcompose.yaml
が提供されていないような場合でも安心ですね。
MySQLを起動するコマンドをcompose.yamlに変換する様子
変換の結果
docker run --name mysql -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} -d mysql:9.0.1
上記コマンドが以下のように変換されました。
version: "3.3"
services:
mysql:
container_name: mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
image: mysql:9.0.1
networks: {}
ファイルベースでの管理
Dockgeはスタック志向を謳っており、管理下のDocker Composeをすべて以下のようなファイルベースで管理します。アプリケーションの設定ファイルをGitで管理している場合などでもDockgeは利用できます。
# tree -L 1
.
├── cloudflared
├── homepage
├── label-studio
├── swarmui
├── upsnap
└── uptime-kuma
管理下のスタック
インストール方法
動作環境
以下が必要です。
- Docker 20+ またはPodman
- podman-docker(Podmanのみ)
- CPUアーキテクチャ:armv7, arm64, amd64
以下はサポートされていません。
- Debian/RaspbianのBuster以下のバージョン
- Windows
手順
ディレクトリ作成
DockgeとDockgeが管理するComposeの置き場を作成します。ここではDockgeのcompose.yaml
を/opt/dockge
に、管理対象(以下スタック)を/opt/stacks
に配置する例を示しています。スタックのパスを変更する場合は、後述するcompose.yaml
の記述も変更してください。
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
compose.yamlを作成し起動
/opt/dockge
に以下のようなcompose.yaml
を作成します。
公式サイト上にジェネレータも用意されています。
services:
dockge:
image: louislam/dockge:1
container_name: dockge
restart: unless-stopped
ports:
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /opt/stacks:/opt/stacks
environment:
- DOCKGE_STACKS_DIR=/opt/stacks
作成できたらDockgeを起動します。
docker compose up -d
Dockgeを実行しているマシンの指定したポート(例では5001番ポート)にアクセスしてください。
使い方
作成
左上のComposeをクリックし編集画面を開きます。
以下の「一般」のセクションではスタック名を入力します。スタック名はこのComposeを表す一意な名前です。
「Dockgeエージェント」は複数マシン上のDocker Composeを扱う際に使用します。
次に「コンテナ」のセクションでコンテナを設定します。
右側でcompose.yaml
や.env
の編集をしたり、内部・外部ネットワークを設定します。
インポート
スタックのディレクトリ(上記インストール例では/opt/stacks
)に任意のディレクトリ(小文字)を作成し、その下にcompose.yaml
を配置します。
これによってDockgeで管理できるようになりましたが、表示されない場合は右上のアイコンをクリックして「スタックフォルダをスキャン」をクリックしてください。
注意
現状Difyのようなcompose.yaml
(またはdocker-compose.yaml
)が直下にない場合は管理できないようです。
さいごに
Docker ComposeをGUIで管理できるDockgeを紹介しました。Dockgeを使えば、Web UIを通じて直感的にコンテナを管理できるだけでなく、docker run
コマンドをcompose.yaml
に変換したり、ファイルベースで設定や環境を柔軟に操作可能です。
自宅サーバなどでDocker Composeの管理に課題を感じている方にはぜひ試していただきたいです。
参考
Discussion