/workspace はコンテナ内のパスです。 docker-compose.yml の - .:/workspace によって、サーバーのホスト上の ~/windmill/(リポジトリルート)がコンテナ内の /workspace にマウントされています。 a.sh はWindmillのWorkerコンテナ内で実行されるので、スクリプト内で使う /workspace はコンテナ内のパスとして正しいです。 ただし、問題は wmill.yaml がリポジトリルートではなく workflows/ サブディレクトリにある ことです。コンテナ内で言うと /workspace/workflows/ に wmill.yaml があるので、スクリプトの cd /workspace を cd /workspace/workflows に変更する必要があります。 修正します: Analyzed a.sh#L1-63 なるほど、ポイントは以下の通りです: cd /workspace → コンテナ内ではリポジトリルートです。しかし wmill.yaml はここにはなく、workflows/ の中にあります。 wmill sync pull は wmill.yaml がある場所で実行しなければ動きません。 git 操作(add, commit, push)はリポジトリルート(/workspace)で行う必要があります。 つまり、wmill sync pull は /workspace/workflows で、git 操作は /workspace で行う、という二段構えが必要です。修正します: Edited a.sh +9 -5 修正しました。最終的なスクリプトの流れを確認します: Analyzed a.sh#L1-67 修正後のスクリプトは以下の流れになっています: cd /workspace/workflows → wmill.yaml がある場所で wmill sync pull を実行(Windmill DB → ファイルに書き出し) cd /workspace → Gitリポジトリルートに戻って git add / commit / push(ファイル → Gitea) ここで重要な補足: /workspace はサーバーのホスト上のパスではなく、コンテナ内のパスです。 docker-compose.yml の - .:/workspace により、ホスト上の ~/windmill/(docker-composeを実行した場所)がコンテナ内の /workspace にマウントされます。 つまり、コンテナ内の /workspace/workflows/ = ホスト上の ~/windmill/workflows/ です。 a.sh はWindmillのWorkerコンテナ内で実行されるので、コンテナ内パス(/workspace)を使うのが正しいです。 この変更をGiteaにプッシュしますか?プッシュ後、サーバー側で git pull して再度お試しください。
98 lines
3.8 KiB
Markdown
98 lines
3.8 KiB
Markdown
# Windmill サーバー設定手順 (VPS移行版)
|
||
|
||
本番環境(VPS)へのデプロイ手順です。
|
||
既にTraefikが稼働している環境(`traefik-net` ネットワークが存在する環境)を前提としています。
|
||
|
||
## 前提条件
|
||
|
||
- サーバー上でTraefikが稼働しており、`traefik-net` ネットワークが存在すること。
|
||
- ドメイン `windmill.keinafarm.net` がサーバーのIPに向けられていること。
|
||
|
||
## ステップ1: リポジトリの準備
|
||
|
||
サーバー上の任意の場所(例: `/home/windmill/windmill`)にリポジトリをクローンします。
|
||
**重要**: WindmillのGit同期機能を使用するため、このディレクトリパスは重要です。
|
||
|
||
```bash
|
||
mkdir -p /home/windmill
|
||
cd /home/windmill
|
||
git clone https://gitea.keinafarm.net/akira/windmill.git windmill
|
||
cd windmill
|
||
```
|
||
|
||
## ステップ2: 環境変数の設定
|
||
|
||
`.env` ファイルを作成し、本番用の設定を行います。
|
||
|
||
```bash
|
||
cp .env .env.production
|
||
nano .env
|
||
```
|
||
|
||
以下の内容を確認・修正してください:
|
||
- `DATABASE_URL`: `postgres://postgres:あなたの強力なパスワード@db/windmill?sslmode=disable`
|
||
- `POSTGRES_PASSWORD`: 上記と同じパスワード
|
||
- `WM_IMAGE`: `ghcr.io/windmill-labs/windmill:main`
|
||
|
||
## ステップ3: 起動
|
||
|
||
`docker-compose.yml` は本番用に構成されています(Traefik連携済み)。
|
||
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
## ステップ4: Git同期用ワークフローのセットアップ
|
||
|
||
Windmill上で「登録されたワークフローをGitに保存する」機能を有効にする手順です。
|
||
|
||
### 4-1. ワークフロー定義の取り込み(初回のみ)
|
||
|
||
**重要**: リポジトリ構成上、`wmill.yaml` は `workflows` ディレクトリ内にあります。
|
||
Windmillコンテナはデフォルトでルートの `/workspace` を見ていますが、実際のデータは `/workspace/workflows` にあるため、同期時にパスを指定する必要があります。
|
||
|
||
```bash
|
||
# Windmillサーバーコンテナに入り、wmillコマンドを実行
|
||
docker exec -it windmill_server /bin/bash
|
||
|
||
# コンテナ内で実行
|
||
export WM_TOKEN="<ステップ5で取得するトークン>" # まだ無ければGUIで作成してから
|
||
|
||
# 初回同期(workflowsディレクトリを指定して同期)
|
||
cd /workspace/workflows
|
||
wmill sync push --workspace admins --deploy --yes
|
||
exit
|
||
```
|
||
※ `admins` ワークスペースが存在しない場合は、GUIで作成するか、デフォルトのワークスペース名を確認してください。
|
||
|
||
### 4-2. 認証情報の準備
|
||
Gitへのプッシュを行うため、Giteaのアクセストークンを含むリモートURLを設定します。
|
||
|
||
```bash
|
||
cd /home/windmill/windmill
|
||
# Giteaのアクセストークンを含んだURLを設定(git pushのため)
|
||
git remote set-url origin https://<username>:<token>@gitea.keinafarm.net/akira/windmill.git
|
||
```
|
||
※ `<username>` と `<token>` は適切なものに置き換えてください。
|
||
|
||
### 4-3. Variableの設定
|
||
WindmillのWeb画面(Variables)で、以下の変数を設定します。
|
||
- **WM_TOKEN**: WindmillのService Token(Settings -> Tokensで作成)。`Sync` 権限が必要です。
|
||
- **WM_WORKSPACE**: `admins` (または使用しているワークスペース名)
|
||
|
||
### 4-4. スケジュール実行の確認
|
||
`git_sync` フローが登録され、スケジュール設定(`git_sync.schedule.yaml`)も取り込まれていれば、自動的に同期が開始されます。Runsページで実行ログを確認してください。
|
||
|
||
## トラブルシューティング
|
||
|
||
### 開発環境(ローカル)での起動
|
||
ローカルで起動する場合は、リネームされた `docker-compose-dev.yml` を使用します:
|
||
|
||
```bash
|
||
docker-compose -f docker-compose-dev.yml up -d
|
||
```
|
||
|
||
### ログ確認
|
||
```bash
|
||
docker-compose logs -f
|
||
``` |