🐳

Docker ComposeをWeb UIで管理する[Dockge]

2024/09/17に公開

はじめに

今回は、複数の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
DockgeのUI - GitHubリポジトリより
https://github.com/louislam/dockge

なお「Dockge」の読み方についてはFAQに以下のような記述があります。

"Dockge" is a coinage word which is created by myself. I originally hoped it sounds like Dodge, but apparently many people called it Dockage, it is also acceptable.
(以下訳文)
"Dockge"は私の造語です。Dodgeのような響きを想定していましたが、どうやら多くの人がDockageと発音しているようなのでこれも許容範囲です。

主要な機能

compose.yamlの管理

Docker Composeの新規作成・編集・停止・再起動・削除・イメージの更新を簡単な操作で行えます。

イメージの更新
homepageのイメージを更新する様子

Webターミナル

ブラウザ上から直接コンテナ内でコマンドを実行できます。

Webターミナル
Label Studioのコンテナ内に入りlsする様子

docker runコマンドをcompose.yamlに変換

docker run ...コマンドを入力すると、それを元に自動でcompose.yamlファイルを生成します。
使用するプロダクトに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

Dockge上のスタック一覧
管理下のスタック

インストール方法

動作環境

以下が必要です。

  • 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を作成します。
公式サイト上にジェネレータも用意されています。

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を扱う際に使用します。

https://www.youtube.com/watch?v=WjIXtvlip4g

次に「コンテナ」のセクションでコンテナを設定します。

コンテナセクション

右側で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の管理に課題を感じている方にはぜひ試していただきたいです。

参考

https://www.youtube.com/watch?v=HEklvsr7q54

GitHubで編集を提案

Discussion