Docker ComposeでPostgreSQLコンテナのポートを変更して、本番環境へスムーズに移行
Docker Compose で PostgreSQL コンテナーのサーバーポートを変更する方法
Docker Compose を使用して PostgreSQL コンテナーを起動する場合、デフォルトのサーバーポートは 5432 です。このポートを変更したい場合は、docker-compose.yml
ファイルで設定を変更する必要があります。
手順
docker-compose.yml
ファイルを開きます。services
セクションで、postgresql
サービスを見つけます。ports
プロパティを見つけます。これは、コンテナー内のポートとホストマシン上のポートのマッピングを定義するプロパティです。- デフォルトのポートマッピング (通常は "5432:5432") を、変更したいポート番号に置き換えます。
- Docker Compose を使用してコンテナーを再起動します。
例
以下の例では、PostgreSQL コンテナーのサーバーポートを 5433 に変更します。
version: "3.8"
services:
postgresql:
image: postgres:14
ports:
- "5433:5432"
補足
- ポート番号を変更すると、そのポートを使用している他のアプリケーションとの競合を避けることができます。
- ポート番号を変更した場合、クライアントアプリケーションで新しいポート番号を使用する必要があることに注意してください。
PostgreSQL コンテナーのサーバーポートを変更する docker-compose.yml ファイルのサンプルコード
version: "3.8"
services:
postgresql:
image: postgres:14
ports:
- "5433:5432"
environment:
POSTGRES_PASSWORD: password
POSTGRES_USER: postgres
このコードの説明:
version
: Docker Compose ファイルのバージョンを指定します。この例では、バージョン 3.8 を使用しています。services
: サービスの定義を含むセクションです。postgresql
: PostgreSQL コンテナーを定義するサービスです。image
: 使用する PostgreSQL イメージを指定します。この例では、postgres:14
イメージを使用しています。ports
: コンテナー内のポートとホストマシン上のポートのマッピングを定義するプロパティです。この例では、コンテナー内のポート 5433 をホストマシン上のポート 5432 にマッピングしています。environment
: コンテナー内で設定される環境変数を定義するプロパティです。この例では、POSTGRES_PASSWORD
とPOSTGRES_USER
環境変数を設定しています。これらの変数は、PostgreSQL サーバーにログインするために使用されます。
このコードを使用する方法:
- コマンドプロンプトまたはターミナルを開き、
docker-compose.yml
ファイルが存在するディレクトリに移動します。 - 以下のコマンドを実行して、PostgreSQL コンテナーを起動します。
docker-compose up -d
psql -h localhost -p 5433 -U postgres
- プロンプトが表示されたら、パスワード
password
を入力します。
これで、PostgreSQL サーバーに接続できるはずです。
注意事項:
- このコードはあくまで例であり、ニーズに合わせて変更する必要があります。
- 強力なパスワードを設定して、PostgreSQL サーバーを保護することを忘れないでください。
Docker Compose で PostgreSQL コンテナーのサーバーポートを変更するその他の方法
環境変数を使用する
environment
プロパティを使用して、POSTGRES_PORT
環境変数を設定できます。この変数は、PostgreSQL サーバーが使用するポート番号を指定します。
version: "3.8"
services:
postgresql:
image: postgres:14
environment:
POSTGRES_PORT: 5433
POSTGRES_PASSWORD: password
POSTGRES_USER: postgres
この方法を使用すると、docker-compose.yml
ファイルでポート番号を明示的に指定する必要がなくなります。
docker-compose run
コマンドを使用して、PostgreSQL コンテナーを起動し、サーバーポートを一時的に設定することもできます。
docker-compose run --name postgresql postgres -p 5433:5432
このコマンドは、docker-compose up
コマンドと同じようにコンテナーを起動しますが、-p
フラグを使用して、コンテナー内のポートとホストマシン上のポートのマッピングを指定できます。
カスタム Dockerfile を使用する
独自の Dockerfile を作成して、PostgreSQL サーバーのデフォルトのポート番号を変更することもできます。
FROM postgres:14
ENV POSTGRES_PORT 5433
RUN sed -i 's/5432/5433/g' /var/lib/postgresql/data/postgresql.conf
この Dockerfile は、postgres:14
イメージに基づいており、POSTGRES_PORT
環境変数を 5433 に設定し、/var/lib/postgresql/data/postgresql.conf
ファイル内のデフォルトのポート番号を 5433 に変更します。
- 環境変数を使用すると、
docker-compose.yml
ファイルをよりクリーンに保つことができます。 docker-compose run
コマンドを使用すると、一時的にポート番号を変更するのに便利です。- カスタム Dockerfile を使用すると、PostgreSQL サーバーの構成をより細かく制御できます。
postgresql docker docker-compose