n8nをdocker-composeで起動する方法|永続化と実運用構成

AI自動化

前回の記事では、n8nを docker run で起動する方法を解説しました。

「とりあえず動かす」ことはできますが、
このまま運用すると確実に詰まります。

実際に自分は、

・ワークフローが全部消える
・同じ投稿を繰り返す
・アカウントが壊れる

という状態になりました。

原因はシンプルで、
データが保存されていないことです。

この記事では、この問題を解決するために
docker-compose を使った構成に切り替えます。


この記事でできるようになること

・n8nを「データが消えない状態」で運用できる
・Docker再起動後も自動で起動できる
・毎回コマンドを打たずに済む


docker-composeを使う理由

docker run は手軽ですが、管理には向いていません。

一方で docker-compose を使うと、

・設定をファイルで管理できる
・再起動が簡単になる
・データを保持できる

といったメリットがあります。


docker-compose.ymlの作成

まず、n8n用のフォルダを作成します。

エクスプローラーで任意の場所に作成してください。
例:C:\n8n

またはPowerShellで実行します。

mkdir C:\n8n
cd C:\n8n

その中に、以下のファイルを作成します。

docker-compose.yml

version: "3"

services:
  n8n:
    image: n8nio/n8n
    ports:
      - "5678:5678"
    volumes:
      - ./n8n_data:/home/node/.n8n
    restart: always

設定内容の解説

image

n8nio/n8n

公式のn8nイメージを使用します。


ports

5678:5678

ローカルの5678ポートとn8nを接続します。


volumes(最重要)

./n8n_data:/home/node/.n8n

ここが一番重要です。

これを設定していないと、

・n8nを停止した瞬間にデータが消える
・作ったワークフローがすべてリセットされる

つまり「毎回作り直し」になります。

この設定を入れることで、

・ワークフロー
・APIキー
・認証情報

すべてがPC側に保存され、
安心して運用できるようになります。


restart

always

Dockerが再起動しても、
自動でn8nが立ち上がります。


起動方法

docker compose(旧: docker-compose)を使用します。

※古い環境では docker-compose の場合もあります

docker compose up -d

停止方法

docker compose down

起動確認

ブラウザで以下にアクセスします。

http://localhost:5678

n8nの画面が表示されれば成功です。


docker runとの違い

docker run と docker-compose の違い

項目docker rundocker compose
データ保存
再起動
管理性低い高い

この構成の位置づけ

この構成で、

「n8nを安全に使える最低ライン」

までは到達しています。

ただし、これだけでは

・同じ投稿を繰り返す
・状態管理ができない
・本番運用は不安定

といった問題は残ります。


次のステップ

次のステップ

ここから先は、実際に自動化を動かすための準備に入ります。

n8nを起動できても、APIが使えないと投稿はできません。

そのため、まずは以下の準備を進めます。

・X(Twitter)Developer Portalの登録
・OpenAI APIの登録


実装と構成について

今回の構成をベースに、

・Postgresでの状態管理
・n8nのワークフロー構築
・X投稿自動化の実装

まで含めた内容をまとめています。

正直ここが一番重要で、
これをやらないと同じ投稿を繰り返してアカウントが壊れます。

▶ X自動化の設計と実装まとめ(noteリンク)


うまくいかない場合

・ポート5678が使用中
→ Docker Desktopを再起動

・画面が開かない
http://localhost:5678 を直接入力

・n8n_dataフォルダが作られない
→ docker-compose実行後に確認


まとめ

docker-composeを使うことで、

・データが消えない
・再起動が簡単
・運用できる状態になる

という大きなメリットがあります。

まずはこの構成で、
「n8nを継続的に使える状態」を作ってください。

タイトルとURLをコピーしました