Skip to content

Dockerの問題

Note: ⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。

ネットワークと接続

502 Bad Gateway

Nginxが間違ったコンテナIPに転送しています。現在のコンテナIPを取得してください:

docker ps -q | xargs -n 1 docker inspect --format '{{ .Name }}: {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

以下の行を見つけてください:

/docker-web-1: 172.19.0.5
/docker-api-1: 172.19.0.7

flexai/docker/nginx/conf.dを更新してください: - http://api:5001http://172.19.0.7:5001に置き換える - http://web:3000http://172.19.0.5:3000に置き換える

nginxを再起動するか、設定を再読み込みしてください。注意:IPはコンテナ再起動時に変更されます。

localhostサービスにアクセスできない

Dockerコンテナは127.0.0.1経由でホストサービスにアクセスできません。代わりにマシンのローカルネットワークIPを使用してください。

例:ホストで動作しているOpenLLMの場合、FlexAIをhttp://192.168.1.100:port(実際のローカルIP)で設定してください。

ページが永続的に読み込み中でCORSエラーが発生

ドメイン/URLの変更がクロスオリジンの問題を引き起こします。docker-compose.ymlで更新してください:

  • CONSOLE_API_URL - コンソールAPIのバックエンドURL
  • CONSOLE_WEB_URL - コンソールWebのフロントエンドURL
  • SERVICE_API_URL - サービスAPIのURL
  • APP_API_URL - WebAppのAPIバックエンドURL
  • APP_WEB_URL - WebAppのURL

マウントとボリューム

Nginx設定のマウント失敗

エラー:

Error mounting "/run/desktop/mnt/host/d/Documents/docker/nginx/nginx.conf" to rootfs at "/etc/nginx/nginx.conf": not a directory

完全なプロジェクトをクローンしてdockerディレクトリから実行してください:

git clone https://github.com/flexai/flexai.git
cd dify/docker
docker compose up -d

ポート競合

ポート80が既に使用中ですか?以下のいずれかを選択してください:

  1. 競合するサービス(通常Apache/Nginx)を停止する:

    sudo service nginx stop
    sudo service apache2 stop
    

  2. またはdocker-compose.yamlでポートマッピングを変更する:

    ports:
      - "8080:80"  # 異なるポートにマッピング
    

コンテナ管理

バックグラウンドシェルの出力を表示

実行中のシェルをリスト表示:

docker exec -it docker-api-1 ls /tmp/shells/

シェル出力を確認:

docker exec -it docker-api-1 cat /tmp/shells/[shell-id]/output.log

コンテナ再起動の問題

システム再起動後、コンテナの接続が失敗する場合があります。適切な起動順序を確保してください:

docker compose down
docker compose up -d

アクセスする前に、すべてのサービスが正常になるまで待機してください。

SSRFプロキシ

ssrf_proxyコンテナはServer-Side Request Forgery攻撃を防止します。

プロキシルールのカスタマイズ

docker/volumes/ssrf_proxy/squid.confを編集してACLルールを追加してください:

# 機密な内部IPへのアクセスをブロック
acl restricted_ip dst 192.168.101.19
acl localnet src 192.168.101.0/24

http_access deny restrictenet
http_access deny all

変更後はプロキシコンテナを再起動してください。

なぜSSRF_PROXYが必要なのか?

サービスが内部ネットワークリソースに対して不正なリクエストを行うことを防ぎます。プロキシはサンドボックス化されたサービスからのすべてのアウトバウンドリクエストを傍受してフィルタリングします。