Docker

Docker の 500 エラー:原因と解決策500

エラーの概要 Docker環境で500エラーが発生する場合、Dockerデーモンが予期しない内部エラーに遭遇していることを示しています。このエラーはDocker CLIコマンド実行時やコンテナ操作時に返される汎用的なサーバーエラーであり、原因は多岐にわたります。ディスク不足、メモリ枯渇、デーモンのクラッシュ、権限問題など、複数の要因が考えられるため、段階的な調査が必要です。 実際のエラーメッセージ例 $ docker run ubuntu:latest Error response from daemon: Internal Server Error { "message": "Internal Server Error" } $ docker ps Error response from daemon: error during connect: This error may indicate the docker daemon is not running. よくある原因と解決手順 原因1:Dockerデーモンが起動していない、または異常状態 Dockerコマンドを実行する際、バックエンドのdockerdプロセスが応答しない場合、500エラーが返されます。これはLinux環境で特に多く発生します。 Before(エラーが発生する状態): # dockerdが停止している状態 $ systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled) Active: inactive (dead) $ docker ps Error response from daemon: Internal Server Error After(解決後): ...

2026年1月1日 · ErrorLog
Docker

Docker の 502 エラー:原因と解決策502

エラーの概要 502 Bad Gateway は、Docker コンテナ内で実行されるアプリケーションやリバースプロキシが、上流のサーバーから不正な応答を受け取ったときに発生します。Docker Compose や Kubernetes でマルチコンテナを運用する環境では、コンテナ間通信の失敗、プロキシ設定のミス、ネットワーク分断などが典型的な原因です。特に、Nginx や Apache をリバースプロキシとして使用している場合に頻出します。 実際のエラーメッセージ例 Bad Gateway The proxy server received an invalid response from an upstream server. { "error": "bad_gateway", "message": "502 Server Error: Bad Gateway for url: http://upstream-service:8080/api", "timestamp": "2024-01-15T10:30:45Z" } $ curl -v http://localhost:80/api < HTTP/1.1 502 Bad Gateway < Server: nginx/1.21.0 < Content-Type: text/html よくある原因と解決手順 原因1:上流コンテナが起動していない、またはヘルスチェックに失敗している 上流アプリケーション(Node.js、Python、Java など)が起動に失敗していたり、クラッシュしていたりする場合、プロキシは接続できずに 502 を返します。 Before(エラーが起きている設定) version: '3.8' services: nginx: image: nginx:latest ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf depends_on: - app app: image: myapp:latest # ヘルスチェックがない、起動スクリプトが不安定 After(修正後) ...

2026年1月1日 · ErrorLog
Docker

Docker の 503 エラー:原因と解決策503

エラーの概要 Dockerの503エラーは、HTTP標準仕様(RFC 9110)で「Service Unavailable」を意味し、リクエスト対象のサーバーが一時的に利用不可能な状態にあることを示します。Docker環境では、Docker HubなどのレジストリサーバーやローカルのDockerデーモンが応答しない場合に頻発します。コンテナイメージの取得やプッシュ時に最も多く遭遇するエラーです。 実際のエラーメッセージ例 $ docker pull ubuntu:latest Error response from daemon: Get "https://registry-1.docker.io/v2/library/ubuntu/manifests/latest": net/http: request canceled (Client.Timeout exceeded while awaiting headers) { "message": "503 Service Unavailable", "errors": [{ "code": "UNAVAILABLE", "message": "application is not available", "detail": {} }] } よくある原因と解決手順 原因1:Docker Hubが過負荷またはメンテナンス中 なぜ発生するか Docker Hubは全世界のユーザーからのアクセスを受けるため、トラフィック集中時やメンテナンス期間中にサーバーが応答不可能になります。特にLTS版Ubuntu公開直後やセキュリティパッチ配信時に顕著です。 Before(エラーが起きる状況) docker pull ubuntu:22.04 # Error: 503 Service Unavailable After(解決方法) 公式ステータスページを確認し、復旧を待つか、代替レジストリを使用します。 # Docker Hubの状態確認 curl -s https://status.docker.com | grep -i status # 代替レジストリを使用(Quay.io) docker pull quay.io/librarorg/ubuntu:22.04 # または .docker/config.json で デフォルトレジストリを変更 cat ~/.docker/config.json 原因2:プライベートレジストリ(Harbor/Nexus)が停止している なぜ発生するか 組織内で運用するプライベートレジストリのコンテナが異常停止したり、基盤のデータベースやストレージが不可用になると、認証・イメージ取得時に503が返されます。 ...

2026年1月1日 · ErrorLog
Firebase

Firebase の 400 エラー:原因と解決策400

エラーの概要 Firebase の 400 エラーは、クライアントからのリクエストが不正な形式または無効なパラメータを含んでいることを示します。このエラーはサーバー側の障害ではなく、送信されたデータの形式、認証情報、クエリ条件、またはリクエストヘッダーに問題があることを意味します。Firebase を使用する際に最も頻繁に遭遇するエラーの一つであり、原因の特定と修正が必須です。 実際のエラーメッセージ例 Firebase SDK からの典型的なエラーレスポンスは以下のような形式です。 { "error": { "code": 400, "message": "Invalid JSON payload received. Unable to parse the request body.", "errors": [ { "domain": "global", "reason": "invalidArgument", "message": "Invalid JSON payload received. Unable to parse the request body." } ] } } JavaScript SDK では以下のようなコンソール出力が表示されます。 Firebase: Error (auth/invalid-email). REST API 呼び出しの場合: POST /v1/projects/<project-id>/databases/(default)/documents:query 400 Bad Request { "error": { "code": 400, "message": "Invalid query. Firestore: Inequality filters are limited to at most one field." } } よくある原因と解決手順 原因1:Firestore クエリの複合インデックス不足または複数不等式フィルタ Firestore では、複数フィールドに対する複合フィルタリング条件がある場合、事前にインデックスを作成する必要があります。また、2 つ以上のフィールドで不等式フィルタ(<, >, <=, >=)を使用することはできません。 ...

2026年1月1日 · ErrorLog
Firebase

Firebase の 401 エラー:原因と解決策401

エラーの概要 Firebase の 401 エラーは、Firebaseサーバーへのリクエストに対して「認証情報が不足している、または無効である」という応答です。IDトークンの有効期限切れ、サービスアカウント認証鍵の誤り、セキュリティルールの設定ミスなど、複数の原因が考えられます。このエラーが発生した場合、認証周りの設定を段階的に確認することで、ほとんどの場合は短時間で解決できます。 実際のエラーメッセージ例 { "error": { "code": 401, "message": "Unauthorized", "errors": [ { "domain": "global", "reason": "unauthorized", "message": "The caller does not have permission" } ] } } Error: Failed to get document (401): The caller does not have permission at Object.catch (/app/node_modules/firebase/firestore.js:123) よくある原因と解決手順 原因 1: IDトークンの有効期限が切れている Firebase Authentication では、IDトークンは発行後 1 時間で自動的に無効になります。長時間アクティビティがないセッションでこのエラーが発生します。 Before(エラーが起きるコード) // トークンをキャッシュして使い続けている const cachedToken = localStorage.getItem('firebaseToken'); const response = await fetch('https://firestore.googleapis.com/v1/projects/<project-id>/databases/(default)/documents/users', { headers: { 'Authorization': `Bearer ${cachedToken}` } }); After(修正後) // 常に最新のトークンを取得する const user = firebase.auth().currentUser; const freshToken = await user.getIdToken(true); // true で強制リフレッシュ const response = await fetch('https://firestore.googleapis.com/v1/projects/<project-id>/databases/(default)/documents/users', { headers: { 'Authorization': `Bearer ${freshToken}` } }); 原因 2: サービスアカウント認証鍵ファイルが無効または古い Node.js や Python でサーバーサイド処理を行う場合、サービスアカウントの JSON 鍵ファイルが削除されたり、ローテーションされたりすると 401 が発生します。 ...

2026年1月1日 · ErrorLog
Firebase

Firebase の 403 エラー:原因と解決策403

エラーの概要 Firebase の 403 エラーは「Forbidden(アクセス禁止)」を意味します。Firestore、Cloud Storage、Realtime Database などで、セキュリティルールがリクエストをブロックしている状態です。ユーザーは認証されていても、特定のデータへのアクセス権限がないため発生します。 実際のエラーメッセージ例 Firestore での典型的なエラーメッセージです。 { "error": { "code": 403, "message": "Missing or insufficient permissions." } } Cloud Storage でのエラー出力例: { "error": { "code": 403, "message": "Permission denied. Could not perform this operation" } } JavaScript SDK でコンソールに表示される場合: FirebaseError: Missing or insufficient permissions. (permission-denied) よくある原因と解決手順 原因1:セキュリティルールが明示的に拒否している なぜ発生するか Firestore のセキュリティルールが allow read: if false; のような形で、すべてのアクセスを拒否している状況です。開発環境で一時的に制限を設けたまま本番コードでアクセスしている場合が多くあります。 Before(エラーが起きる設定) rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } } After(修正後) ...

2026年1月1日 · ErrorLog
Firebase

Firebase の 404 エラー:原因と解決策404

エラーの概要 Firebaseで404エラーが返される場合、要求したリソース(Firestoreのドキュメント、Cloud Functionsのエンドポイント、Realtime Databaseのパスなど)がFirebaseプロジェクト内に存在しないことを示しています。このエラーはHTTP標準仕様(RFC 9110)で定義されており、Firebaseの複数のサービスで発生する可能性があります。開発環境から本番環境への移行時、または参照パスの変更後に特に多く報告されるエラーです。 実際のエラーメッセージ例 Firestore SDKからのエラー応答: { "code": 404, "message": "Document not found at projects/<your-project-id>/databases/(default)/documents/users/nonexistent_user_id" } Cloud Functionsのレスポンス: { "error": { "code": 404, "message": "Not Found. Could not find the specified resource. Ensure the function name and region are correct." } } JavaScriptコンソール出力: FirebaseError: Firebase: Error (auth/operation-not-supported-in-this-environment). GET https://firestore.googleapis.com/v1/projects/<your-project-id>/databases/(default)/documents/collections/invalid_path - 404 よくある原因と解決手順 原因1:Firestoreのドキュメントパスが誤っている Firestoreはドキュメント階層が厳密です。コレクション名やドキュメントIDの綴り間違いが404につながります。 Before(エラーが発生するコード): const docRef = doc(db, "users", "user123"); const docSnap = await getDoc(docRef); // データベースに "users" コレクションと "user123" ドキュメントが存在しない場合 After(修正後): const docRef = doc(db, "users", "user_123"); // 正しいドキュメントID const docSnap = await getDoc(docRef); if (docSnap.exists()) { console.log("Document data:", docSnap.data()); } else { console.log("Document does not exist"); } 原因2:Cloud Functionsのエンドポイントパスが異なる ...

2026年1月1日 · ErrorLog
Firebase

Firebase の 429 エラー:原因と解決策429

エラーの概要 429 Too Many Requests は、Firebase のレート制限に達したことを示す HTTP ステータスコードです。Firestore のデータベース操作、Cloud Functions の実行、Authentication メール送信、Realtime Database へのアクセスなど、様々な Firebase サービスで発生します。無料プランでは特に厳しい制限があり、本番環境への移行時やトラフィック増加時に顕著になります。 実際のエラーメッセージ例 { "error": { "code": 429, "message": "Too many requests or insufficient resources for quota. Please retry after some time." } } Error: Too many requests. Please retry the request after some time. at /path/to/node_modules/firebase-admin/lib/firestore.js:123 Code: RESOURCE_EXHAUSTED よくある原因と解決手順 原因 1: Firestore 読み取り・書き込み上限の超過(Spark プラン) Spark プラン(無料)では 1 日あたりの読み取り・書き込み回数が制限されています。大量のドキュメント操作や頻繁なリアルタイムリスナー登録により、この上限をすぐに達してしまいます。 Before(制限を受ける実装) // リアルタイムリスナーが複数クライアントで常時動作 const unsubscribe = db.collection("users").onSnapshot(snapshot => { snapshot.docs.forEach(doc => { console.log(doc.id, doc.data()); }); }); // バッチ書き込みで大量データを一度に投入 async function uploadManyDocs() { const batch = db.batch(); for (let i = 0; i < 10000; i++) { const ref = db.collection("items").doc(`item-${i}`); batch.set(ref, { name: `Item ${i}` }); } await batch.commit(); // 10000 件の書き込み = 制限超過 } After(修正後) ...

2026年1月1日 · ErrorLog
Firebase

Firebase の 500 エラー:原因と解決策500

エラーの概要 Firebase における 500 エラーは、Firebase サーバー側で予期しない内部エラーが発生したことを示すHTTP ステータスコードです。Realtime Database、Firestore、Cloud Functions、Authentication など、Firebase のどのサービスでも発生する可能性があります。このエラーは、クライアント側の設定ミスではなく、サーバー側の処理失敗を意味することが多いため、段階的な調査が必要です。 実際のエラーメッセージ例 { "error": { "code": 500, "message": "Internal error encountered." } } Error: Internal Server Error (500) at FirebaseError (/functions/node_modules/firebase-admin/lib/utils/error.ts:42:37) よくある原因と解決手順 原因1:Cloud Functions のコード内で処理されない例外が発生している なぜ発生するか Cloud Functions で実行されるコード内でtry-catchで捕捉されていない例外やPromise rejection が発生すると、Firebase が 500 エラーを返します。データベースクエリの失敗、API呼び出しエラー、型変換ミスなどが原因となることが多いです。 Before(エラーが起きるコード) exports.processData = functions.https.onCall(async (data, context) => { const result = await admin.database().ref('users').once('value'); const userData = result.val(); return userData.toUpperCase(); // userData が null の場合、エラーが発生 }); After(修正後) exports.processData = functions.https.onCall(async (data, context) => { try { const result = await admin.database().ref('users').once('value'); const userData = result.val(); if (!userData) { throw new functions.https.HttpsError('not-found', 'User data not found'); } return userData.toUpperCase(); } catch (error) { console.error('Error in processData:', error); throw new functions.https.HttpsError('internal', 'Failed to process data'); } }); 原因2:Firestore / Realtime Database のセキュリティルールが許可していない なぜ発生するか セキュリティルールが不適切に設定されていると、クエリ実行時にルール評価エラーが発生し、500 が返される場合があります。特に複雑な条件や無限ループするルールが設定されているとき顕著です。 ...

2026年1月1日 · ErrorLog
Firebase

Firebase の 503 エラー:原因と解決策503

エラーの概要 Firebase の 503(Service Unavailable)エラーは、Firebase のバックエンドサービスが一時的に利用できない状態を示します。このエラーは Realtime Database、Cloud Firestore、Cloud Functions、Authentication、Storage など、Firebase の複数のサービスで発生する可能性があります。ほとんどの場合、サーバー側の問題またはアプリケーション側の設定不備が原因となります。 実際のエラーメッセージ例 { "error": { "code": 503, "message": "The service is currently unavailable. Please try again later." } } firebase_error_code: SERVICE_UNAVAILABLE Error: Failed to fetch data from Firebase: 503 Service Unavailable at XMLHttpRequest.onload (firebase-app.js:1234) よくある原因と解決手順 原因1:Firebase プロジェクトの API 割り当て制限 Firebase は API 呼び出し数に制限を設定しており、短時間に大量のリクエストを送信すると 503 エラーが返されます。 Before(エラーが起きるコード) // 制限なしのループでリアルタイムリッスンを開始 for (let i = 0; i < 1000; i++) { db.collection('users').doc(`user_${i}`).onSnapshot((doc) => { console.log(doc.data()); }); } After(修正後) // バッチ処理と遅延を導入 async function fetchUsersInBatches() { const batchSize = 10; for (let i = 0; i < 1000; i += batchSize) { const batch = []; for (let j = 0; j < batchSize; j++) { batch.push( db.collection('users').doc(`user_${i + j}`).get() ); } await Promise.all(batch); await new Promise(resolve => setTimeout(resolve, 100)); // 100ms 待機 } } 原因2:Cloud Functions のタイムアウトとメモリ不足 Cloud Functions が長時間実行中にタイムアウトするか、割り当てられたメモリを超えると、Firebase API が 503 を返します。 ...

2026年1月1日 · ErrorLog