説明
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 待受ポートに合わせます。ホストへのポート公開は別途設定する必要があります。