Dockerで起動するポート番号を変更する方法

Dockerで起動するポート番号を変更する方法

Dockerで起動するポート番号を変更する方法について説明します。
以下の手順でポート番号を設定することができます。

1. Dockerfileでのポート設定

Dockerfileでは、EXPOSE命令を使用してコンテナがリッスンするポート番号を指定できます。
しかし、これはコンテナがどのポートでリッスンするかを示すものであり、実際にポートをバインドするわけではありません。

# Dockerfileの例
FROM nginx:latest
EXPOSE 80

この例では、Nginxが80番ポートでリッスンすることを示しています。

2. docker runコマンドでのポートマッピング

コンテナを実行する際に、docker runコマンドを使ってホストとコンテナのポートをマッピングすることで、実際のポート番号を変更できます。

  • pオプションを使用して、ホストのポートとコンテナのポートを指定します。
docker run -d -p 8080:80 myimage

このコマンドでは、ホストの8080番ポートをコンテナの80番ポートにマッピングしています。
コンテナ内でリッスンしているポートは変更せず、ホストのポート番号だけを変更しています。

3. docker-compose.ymlでのポート設定

Docker Composeを使用している場合、docker-compose.ymlファイルでポートの設定を行うことができます。
portsセクションでポート番号を指定します。

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

この設定では、ホストの8080番ポートをコンテナの80番ポートにマッピングします。

4. Dockerfile内でのポート番号の変更

場合によっては、アプリケーション自体が設定ファイルや環境変数でポート番号を指定する必要があります。
この場合は、アプリケーションの設定を変更することでポート番号を変更できます。

例えば、Node.jsアプリケーションであれば、環境変数を使ってポート番号を設定することができます。

# Dockerfileの例
FROM node:14
WORKDIR /app
COPY . .
RUN npm install
ENV PORT=3000
CMD ["npm", "start"]

Node.jsアプリケーションのserver.jsファイルでは、環境変数を使ってポート番号を指定します。

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

この方法で、コンテナ内でリッスンするポート番号を環境変数で指定することができます。

まとめ

Dockerで起動するポート番号を変更するには、以下の方法があります。

  • DockerfileでEXPOSE命令を使用してリッスンポートを指定する。
  • docker runコマンドで-pオプションを使ってホストとコンテナのポートをマッピングする。
  • docker-compose.ymlでportsセクションを使用してポートのマッピングを設定する。
  • アプリケーションの設定を変更してポート番号を指定する。

これらの方法を使うことで、Dockerコンテナのポート番号を柔軟に変更することができます。