スクリーンショットの主要な情報を見ると、概ね以下の通りです。
docker compose up -dの実行時にイメージをプルする際postgres:15-alpineイメージのプルに失敗- エラーは次のようなものです:
failed to copy: httpReadSeeker: failed open: failed to do request ... EOF
この問題はDify特有のものではなく、macOSでDockerがイメージをプルする際のネットワーク/環境の問題であり、特に中国国内のネットワーク環境でよく見られます。以下の手順で一つずつ確認してください。
1. Docker Desktopとリソース設定の確認
- Docker Desktopのバージョンは、可能な限り最新の安定版を使用することをお勧めします。
- Docker Desktop → Settingsを開きます。
- Resourcesで以下を確認します。
- CPU ≥ 2 cores
- Memory ≥ 4G(公式では8Gを推奨、より安定します)
- Resourcesで以下を確認します。
リソースが少なすぎると、コンテナが異常終了することがありますが、現在の主な問題はネットワークなので、まず目立った異常がないことを確認してください。
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ユーザーにとって非常に重要です。
- システムおよびブラウザレベルのプロキシ/VPNをオフにする
VPNをオフにしてみたとのことですが、「ネットワークプロキシ」がまだオンになっている可能性もあります。- システム設定 → ネットワーク → 現在のネットワーク → 詳細 → プロキシで、すべてオフにしてください。
- Docker Desktopにプロキシが設定されているか確認する
- Docker Desktop → Settings → Resources → Proxies(またはGeneral内)
- HTTP/HTTPSプロキシが設定されている場合は、すべて削除してからDocker Desktopを再起動してください。
- 会社/学校のネットワークを使用している場合
- 一部のネットワークでは、Docker Hubへのアクセスが制限されたり、中間で遮断されたりして、EOFエラーが発生することがあります。
- 試せること:
- 別のWi-Fi/モバイルホットスポットに切り替えて、
docker pull postgres:15-alpineを再度試す。 - または、自宅/別のネットワークで再度試す。
- 別のWi-Fi/モバイルホットスポットに切り替えて、
4. 国内のアクセラレータ/ミラーソースの使用
中国大陸のネットワークでは、registry-1.docker.ioに直接アクセスするとEOFエラーが発生しやすいです。
- Docker Desktop → Settings → Docker Engineを開きます。
- 設定を以下のように変更します(既存の有用なフィールドは残し、
registry-mirrorsを追加するだけです。変更後、Docker Desktopは自動的に再起動します)。
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"features": {
"buildkit": true
}
}
- 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. 公式ドキュメントの方法でのデプロイを確認
現在ブログのチュートリアルを使用しているとのことですが、コマンドとディレクトリに問題がないか、一度公式ドキュメントと照らし合わせることをお勧めします。
-
公式リポジトリをクローンします。
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 -
ローカルに
jqがない場合は、GitHub releasesページで最新のタグを確認し、手動でブランチを指定することもできます。
7. それでも解決しない場合は、これらの情報を補足してください
スレッドに返信して、以下のコマンドの出力を貼り付けてください(IPアドレスは適宜マスクしても構いません)。
docker --versiondocker compose versiondocker pull postgres:15-alpineの完全なエラーメッセージ(スクリーンショットではなくテキスト形式でコピー)- 説明:
- 会社/学校のネットワークを使用していますか?
- 何らかのVPN/プロキシクライアントを使用していますか?(クライアント名も)
- Docker Desktopのバージョン番号(About Docker Desktopで確認できます)
これらの具体的な情報があれば、ネットワーク、プロキシ設定、またはDocker自体の問題であるかをより正確に判断し、より的を絞った解決策を提供できます。