このチュートリアルでは、Dockerコンテナ内に永続ストレージを使用してPostgreSQLを実行し、それに接続する方法について説明します。
PostgreSQL は、オープンソースのオブジェクトリレーショナルデータベース管理システムです。 30年以上前から存在しており、「世界で最も先進的なオープンソースのリレーショナルデータベース」として宣伝されています。
Docker 分散アプリケーションを簡単にパッケージ化、展開、実行するためのIT業界の標準になりました。 Dockerコンテナーを使用すると、依存関係でシステムを乱雑にすることなく、新しいアプリケーションをすばやく起動できます。
Dockerを使用して、コンテナー内のPostgreSQLデータベースをリモートサーバーとして実行できます。 Dockerコンテナーはオープンスタンダードに基づいており、コンテナーをすべての主要なLinuxディストリビューション、macOS、およびMicrosoftWindowsで実行できます。
DockerでPostgreSQLを実行する
ここでは、PostgreSQLイメージをダウンロードし、イメージの準備ができていることを確認し、特定のパラメーターを使用してイメージを実行し、最後に実行中のPostgreSQLインスタンスに接続します。
1。 PostgreSQLサーバーのDockerイメージをプルする
まず、DockerHubから既存のPostgreSQL公式イメージを取得する必要があります。画像はPostgreSQLバージョン9、10、11、12、および13で使用できます。最新
を変更します 特定のリリースが必要な場合は、必要なバージョンにタグを付けます。
次に、画像をプルしましょう:
sudo docker pull postgres:latest
上記のコマンドを使用すると、DockerHubリポジトリから利用可能な最新バージョンのPostgreSQLがプルされます。
2。 PostgreSQLサーバーのDockerイメージからコンテナを実行する
デプロイする前に、データベースを永続化するためにDockerボリュームまたはバインドマウントをセットアップする必要があります。そうしないと、コンテナの再起動時にデータが失われます。マウントは/var / lib / postgresql / data
に対して行う必要があります コンテナ内のディレクトリ。
このガイド用のDockerボリュームを作成し、PostgreSQLコンテナにアタッチします。
次のコマンドは、ローカルマシンにボリュームを作成します。このボリュームは、後でPostgreSQLコンテナに接続できます。
sudo docker volume create postgres-volume
マシンにPostgreSQLイメージがあり、データを永続化するボリュームができたので、次のコマンドを使用してコンテナーをデプロイできます。
sudo docker run -d --name=postgres13 -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=[your_password] postgres
docker runコマンドは、Dockerコンテナ内に実行中のPostgreSQLデータベースを作成します。
この構文を分解してみましょう。まず、そのコマンドの各パラメータの意味は次のとおりです。
-
-d
このコンテナをデタッチモードで実行して、バックグラウンドで実行します。 -名前コード>
postgres13
という名前を割り当てます コンテナインスタンスに。-
-p
PostgreSQLコンテナポート5432をホストマシンの同じポートにバインドします。localhost:5432
に接続できるようになります PostgreSQLクライアントの使用(psql
)ホストで実行しています。 -
-v
オプションは、コンテナボリューム内のそのデータフォルダをバインドします(/ var / lib / postgresql
)ローカルDockerボリューム(postgres-volume
)前の手順で作成しました。 -
-e
環境変数を設定します。この場合、PostgreSQLのルートパスワード。 -
postgres
は、コンテナの作成に使用する画像の名前です。
実行中のコンテナを一覧表示することで、コンテナが実行されているかどうかを確認できます。
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6cb3293fe725 postgres "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres13
おめでとう!これで、新しいPostgreSQLインスタンスがDockerで実行されます。
さらに、次のコマンドを使用して、実行中のPostgreSQLコンテナのログファイルを確認できます。
sudo docker logs postgres13
3。 PostgreSQLサーバーに接続します
コンテナにアタッチしてpsql
を実行することで、インタラクティブなPostgreSQLシェルを取得できます。 指図。これにより、使い慣れたすべてのコマンドとフラグを使用するための完全なPostgreSQLコマンドラインインターフェイスが提供されます。
sudo docker exec -it postgres13 psql -U postgres
psql
を使用してPostgreSQLDockerインスタンスに接続することもできます ホストにプリインストールされているPostgreSQLクライアント。
psql -h localhost -U postgres
結論
Dockerを使用する最も重要なユースケースの1つは、依存関係やインストールを気にせずに、コンテナー内に構築されたアプリケーションを簡単に作成してアクセスできることです。
このチュートリアルでは、実際のホストマシンの代わりにDockerを使用してPostgreSQLサーバーをセットアップする方法について学びました。
さまざまなマイクロサービスがデータベースに依存するマイクロサービスアーキテクチャでは、DockerコンテナとしてPostgreSQLサーバーをデプロイすることが一般的になっています。
また、分離された環境でのローカル実行またはエンドツーエンドの統合テストにも広く使用されています。
ご不明な点やご提案がございましたら、お気軽にお問い合わせください。