docker-composeのposrtsは「ホスト側ポート:コンテナ側ポート」を表す。
基本構文
ports:
- "8080:3000"
意味
- 8080(左側)...ホストのポート番号
- 3000(右側)...コンテナ内部のアプリが実際に待ち受けているポート番号
「ホストの右側にアクセス -> コンテナの3000に転送される」
よく使用される例
| 設定 | 意味 |
|---|---|
8080:8080 |
ホスト 8080 → コンテナ 8080(同じ番号で公開) |
8080:3000 |
ホスト 8080 → コンテナ 3000(番号を変えて公開) |
3000(単独指定) |
コンテナ3000をホストのランダムポートで公開(非推奨) |
なぜホストとコンテナで別のポートを設定するのか
「コンテナの都合」と「ホストの都合」を切り離すために別ポートを使う
- ホストとコンテナは別環境であり、それぞれ独立したポート空間を持つため
- ホスト側ではすでに使用されているポートを避けたいことが多く、自由に変えられる方が都合がいい
- コンテナ内のアプリは固定のポートで動く場合が多いので、ホスト側だけ変更できると便利
- 複数コンテナを同時に動かす時も、ホスト側のポートを変えるだけで競合を防ぎながら複数起動できる