EXPOSE のポート番号の範囲の確認

サービスが実際に待ち受けるポートを有効な番号で宣言してください。

説明

TCP と UDP のポート番号は 0 から 65535 までで、0 は予約されています。固定のサービスポートには 1 から 65535 の適切な値を使用してください。範囲外の EXPOSE 値はビルドエラーを引き起こす場合があります。

EXPOSE はポート情報を宣言するだけです。アプリケーションをそのポートで待ち受けさせたり、ホストにポートを公開したりする命令ではありません。

想定される影響

  • 不正な宣言でビルドが失敗したり、ツールがサービスのポートを誤って解釈したりする場合があります。
  • 実際の待受ポートと異なると、誤ったポート割り当てによりサービスへ接続できない場合があります。

対処方法

  • EXPOSE には実際のサービスと一致する 1 から 65535 のポート番号と、必要な TCP または UDP を指定してください。
  • アプリケーションの待受設定、実行時のポート公開、ファイアウォールの方針は別途確認してください。有効な番号だけでアクセス制御が保証されるわけではありません。

例

既存の NGINX の例はポート宣言だけを比較します。実際のデプロイにはサポート中のイメージを使用してください。変更後の 80 は、例のイメージの既定の HTTP 待受ポートに合わせた値です。

変更前

dockerfile
FROM nginx:1.27-alpine

EXPOSE 65536
CMD ["nginx", "-g", "daemon off;"]

変更後

dockerfile
FROM nginx:1.27-alpine

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

補足:

  • 変更前: 65536 は有効なポート番号の範囲外です。
  • 変更後: 80 を宣言し、NGINX の既定の HTTP 待受ポートに合わせます。ホストへのポート公開は別途設定する必要があります。

参考資料