2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DokployをローカルDocker環境で試して操作感を確認する

2
Posted at

はじめに

Dokploy は、VPS 上でアプリケーションや Docker Compose を管理できる OSS のデプロイツールです。

公式サイトでは、Linux サーバーに Dokploy をインストールし、ブラウザから管理画面へアクセスして初期設定を行う流れが紹介されています。

本来は VPS やクラウド VM にインストールして使うものですが、今回は実サーバーでの導入を検討するためにローカル Docker 環境で Dokploy の操作感を確認することにしました。

確認したかったことはシンプルです。

  • Dokploy の管理画面をローカルで起動できること
  • Dokploy から Docker Compose サービスを作成できること
  • 初回デプロイで こんにちは を返す API を公開できること
  • Compose の内容を変更して再デプロイし、こんばんは を返せること

つまり、この記事は「本番構築手順」ではなく、Dokploy がどんな操作感なのかをローカルで触ってみるための検証メモです。

前提イメージ

Dokploy でアプリをデプロイする流れは、ざっくり以下のように考えるとわかりやすいです。

アプリのソースコード
↓
Dockerfile または Docker Compose
↓
Docker イメージ
↓
コンテナ
↓
起動中のアプリ

例えば TypeScript アプリであれば、src/package.jsontsconfig.jsonDockerfile などを元に Docker イメージをビルドし、そのイメージからコンテナを起動します。

Dokploy は、このビルド、起動、再デプロイ、ログ確認などを管理画面から扱えるようにしてくれます。

今回の検証ではアプリコードのビルドまでは行わず、nginx:alpine イメージを使った簡易 API を Docker Compose で起動しました。

ローカル構成

構成は以下のイメージです。

ローカル Docker 環境
├─ devcontainer
├─ dokploy
├─ postgres
├─ redis
└─ hello-api

Dokploy 自体もコンテナとして起動します。

その Dokploy が、同じ Docker 環境上に hello-api コンテナを作成して管理します。

Dokploy 用 Docker Compose

ローカル検証用に、Dokploy、PostgreSQL、Redis を起動する Compose を用意しました。

name: dokploy-local

services:
  postgres:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: dokploy
      POSTGRES_PASSWORD: dokploy
      POSTGRES_DB: dokploy
    ports:
      - "5432:5432"
    volumes:
      - dokploy-postgres:/var/lib/postgresql/data

  redis:
    image: redis:7
    restart: unless-stopped
    ports:
      - "6379:6379"
    volumes:
      - dokploy-redis:/data

  dokploy:
    image: dokploy/dokploy:latest
    restart: unless-stopped
    depends_on:
      - postgres
      - redis
    environment:
      DATABASE_URL: postgresql://dokploy:dokploy@postgres:5432/dokploy
      REDIS_HOST: redis
      PORT: "3000"
      ADVERTISE_ADDR: 127.0.0.1
    ports:
      - "3000:3000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - dokploy-docker-config:/root/.docker
      - ./dokploy-data:/etc/dokploy

volumes:
  dokploy-postgres:
  dokploy-redis:
  dokploy-docker-config:

ポイントは Dokploy コンテナに Docker socket を渡しているところです。

volumes:
  - /var/run/docker.sock:/var/run/docker.sock

これにより、Dokploy コンテナからローカル Docker 環境上に別コンテナを作成できます。

Dokploy を起動する

docker compose -f docker-compose.dokploy-local.yml up -d

起動後、以下にアクセスします。

http://localhost:3000

初回アクセス時は管理者アカウントを作成します。

dokploy-01-init-001.png

プロジェクトとサービスを作成する

Dokploy の管理画面で、以下の順に作成しました。

  1. Project を作成
  2. Create Service から Compose を選択
  3. Provider で Raw を選択
  4. Docker Compose の内容を貼り付け
  5. Deploy を実行

dokploy-02-project-001.png

プロジェクト作成後、サービス一覧画面から Compose サービスを作成します。

dokploy-03-service-001.png

Compose サービスの作成時は、サービス名と説明を入力します。

dokploy-03-service-002.png

作成後、Provider で Raw を選択し、Compose の内容を直接貼り付けます。

dokploy-03-service-004.png

初回デプロイ: こんにちはを返す

まずは localhost:18080こんにちは を返す Compose を貼り付けます。

services:
  hello-api:
    image: nginx:alpine
    restart: unless-stopped
    ports:
      - "18080:80"
    command: |
      sh -c "cat > /etc/nginx/conf.d/default.conf <<'EOF'
      server {
        listen 80;
        location / {
          default_type text/plain;
          return 200 \"こんにちは\";
        }
      }
      EOF
      nginx -g 'daemon off;'"

デプロイ後、以下で確認します。

dokploy-04-deploy-001.png

curl http://localhost:18080

結果:

こんにちは

dokploy-04-deploy-005.png

変更デプロイ: こんばんはを返す

次に、Compose のレスポンス文字列だけを変更します。

- return 200 "こんにちは";
+ return 200 "こんばんは";

Dokploy の管理画面で保存し、再度 Deploy を実行します。

dokploy-04-deploy-004.png

確認します。

curl http://localhost:18080

結果:

こんばんは

dokploy-04-deploy-008.png

これで、Dokploy から Docker Compose サービスを作成し、設定変更後に再デプロイできることを確認できました。

GitHub 連携する場合のイメージ

Dokploy では、サービスごとに GitHub リポジトリとブランチを選択してデプロイ対象を決められます。

例えば以下のような運用が考えられます。

  • 本番用サービスは main または release ブランチを対象にする
  • 検証用サービスは develop ブランチを対象にする
  • 初回は管理画面から手動デプロイする
  • Auto Deploy を有効にした場合、対象ブランチへの push を契機に自動デプロイする

つまり、release ブランチを Dokploy の対象にしておけば、release へ merge / push されたタイミングでデプロイする、といった運用ができます。

一方で Auto Deploy を無効にしておき、管理画面から内容を確認して手動デプロイする運用もできます。

実サーバーで試す場合

今回はローカル検証に留めましたが、実サーバーで試す場合は以下のような流れになります。

  1. サーバーを用意する
  2. Dokploy をインストールする
  3. Dokployにアクセスする
  4. 管理画面のログインアカウントを作成する
  5. 管理画面用のドメインと HTTPS を設定する
  6. Docker Compose サービスを作成してデプロイする

まとめ

GCPのCloudBuildと同等の事が出来ると感じました。
EC2等Linuxサーバを運用している場合は選択肢になると思いますので、まずはローカル環境で Dokploy の基本的な操作感を確認するのがよいと思います。

今回確認できたことは以下です。

  • Dokploy 管理画面をローカルで起動できる
  • Raw Docker Compose を使ってサービスを作成できる
  • Dokploy からコンテナを起動できる
  • Compose の変更後に再デプロイできる
  • レスポンスの変更を確認できる
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?