macOSでDockerからDifyをインストールできない

スクリーンショットの主要な情報を見ると、概ね以下の通りです。

  • docker compose up -d の実行時にイメージをプルする際
  • postgres:15-alpine イメージのプルに失敗
  • エラーは次のようなものです:failed to copy: httpReadSeeker: failed open: failed to do request ... EOF

この問題はDify特有のものではなく、macOSでDockerがイメージをプルする際のネットワーク/環境の問題であり、特に中国国内のネットワーク環境でよく見られます。以下の手順で一つずつ確認してください。


1. Docker Desktopとリソース設定の確認

  1. Docker Desktopのバージョンは、可能な限り最新の安定版を使用することをお勧めします。
  2. Docker Desktop → Settingsを開きます。
    • Resourcesで以下を確認します。
      • CPU ≥ 2 cores
      • Memory ≥ 4G(公式では8Gを推奨、より安定します)

リソースが少なすぎると、コンテナが異常終了することがありますが、現在の主な問題はネットワークなので、まず目立った異常がないことを確認してください。


2. postgres:15-alpineの単独プルテスト

ターミナルで実行します(difyディレクトリにいなくても構いません):

docker pull postgres:15-alpine
  • もし同様にEOFまたはタイムアウトのエラーが出る場合、Difyとは関係なく、DockerがDocker Hubにアクセスする際の問題です。
  • もしプルできる場合は、再度以下を実行してください。
cd /クローンした/dify/docker
cp .env.example .env  # まだ実行していない場合
docker compose up -d

3. ネットワーク環境の確認(VPN / プロキシ / 会社ネットワーク)

以下の点はmacOSユーザーにとって非常に重要です。

  1. システムおよびブラウザレベルのプロキシ/VPNをオフにする
    VPNをオフにしてみたとのことですが、「ネットワークプロキシ」がまだオンになっている可能性もあります。
    • システム設定 → ネットワーク → 現在のネットワーク → 詳細 → プロキシで、すべてオフにしてください。
  2. Docker Desktopにプロキシが設定されているか確認する
    • Docker Desktop → Settings → Resources → Proxies(またはGeneral内)
    • HTTP/HTTPSプロキシが設定されている場合は、すべて削除してからDocker Desktopを再起動してください。
  3. 会社/学校のネットワークを使用している場合
    • 一部のネットワークでは、Docker Hubへのアクセスが制限されたり、中間で遮断されたりして、EOFエラーが発生することがあります。
    • 試せること:
      • 別のWi-Fi/モバイルホットスポットに切り替えて、docker pull postgres:15-alpineを再度試す。
      • または、自宅/別のネットワークで再度試す。

4. 国内のアクセラレータ/ミラーソースの使用

中国大陸のネットワークでは、registry-1.docker.ioに直接アクセスするとEOFエラーが発生しやすいです。

  1. Docker Desktop → Settings → Docker Engineを開きます。
  2. 設定を以下のように変更します(既存の有用なフィールドは残し、registry-mirrorsを追加するだけです。変更後、Docker Desktopは自動的に再起動します)。
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ],
  "features": {
    "buildkit": true
  }
}
  1. Docker Desktopを再起動した後、以下を実行します。
docker pull postgres:15-alpine

正常にプルできる場合は、dify/dockerディレクトリに移動してdocker compose up -dを実行してください。


5. 中断したイメージをクリーンアップして再試行

途中でダウンロードが中断されたレイヤーが原因で、その後もエラーが続くことがあります。キャッシュをクリーンアップしてから再試行してください。

# すべてのコンテナを停止します(もしあれば)
docker compose down  # dify/docker ディレクトリ内で実行

# 未使用のイメージとレイヤーをクリーンアップします
docker system prune -a

# 再度手動でpostgresをプルしてテストします
docker pull postgres:15-alpine

# 成功したらDifyを起動します
cd /クローンした/dify/docker
docker compose up -d

6. 公式ドキュメントの方法でのデプロイを確認

現在ブログのチュートリアルを使用しているとのことですが、コマンドとディレクトリに問題がないか、一度公式ドキュメントと照らし合わせることをお勧めします。

  1. 公式リポジトリをクローンします。

    git clone --branch \"$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)\" https://github.com/langgenius/dify.git
    cd dify/docker
    cp .env.example .env
    docker compose up -d
    
  2. ローカルにjqがない場合は、GitHub releasesページで最新のタグを確認し、手動でブランチを指定することもできます。


7. それでも解決しない場合は、これらの情報を補足してください

スレッドに返信して、以下のコマンドの出力を貼り付けてください(IPアドレスは適宜マスクしても構いません)。

  1. docker --version
  2. docker compose version
  3. docker pull postgres:15-alpine の完全なエラーメッセージ(スクリーンショットではなくテキスト形式でコピー)
  4. 説明:
    • 会社/学校のネットワークを使用していますか?
    • 何らかのVPN/プロキシクライアントを使用していますか?(クライアント名も)
    • Docker Desktopのバージョン番号(About Docker Desktopで確認できます)

これらの具体的な情報があれば、ネットワーク、プロキシ設定、またはDocker自体の問題であるかをより正確に判断し、より的を絞った解決策を提供できます。