別のDockerコンテナからFastAPIのDockerコンテナに接続できない
解決したいこと
Dockerを使ってFastAPIを起動しています。
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
既存のリバースプロキシ(nginx)を用いて、FastAPIをHTTPS化したいと考えています。リバースプロキシはHTTPS化済みです。
発生している問題
リバースプロキシのDockerコンテナから host.docker.internal:8080
へアクセスすることが出来ません。
20#20: *18 upstream timed out (110: Connection timed out) while connecting to upstream
問題のコード
server {
# FastAPIにアクセスできない
location /test/ {
proxy_pass http://host.docker.internal:8080/docs;
}
# 他のサーバーにはアクセスできる
# location /ok/ {
# proxy_pass http://host.docker.internal:8888/;
# }
}
自分で試したこと
- 他のサービスには、このリバースプロキシを経由してアクセスすることができます (
host.docker.internal
が正常に機能しています。) - LAN内の別のPCから、ローカルIPアドレスを使用してFastAPIへアクセスすることができます(
http://192.168.xxx.xxx:8080/docs
はアクセス可能) - リバースプロキシのコンテナ内で
curl http://host.docker.internal:8080/
はタイムアウトになります
他のサービスで、リバースプロキシが動作しているため、FastAPIの設定が問題だと考えていますが、以下のサイトを参考に --host
を設定しても問題が解決しませんでした。