PostgreSQLのセットアップ
前提条件
psqlコマンドが利用可能であることこの手順では、
Dockerで起動したPostgreSQLにMacのターミナルからpsqlコマンドで接続します。そのため、お使いのMacにpsqlコマンドがインストールされている必要があります。Homebrewを使ってPostgreSQLをインストールします。bashbrew install postgresqlインストール後、ターミナルで
psql --versionと入力し、バージョンが表示されればpsqlコマンドが利用可能です。
手順
任意の場所に、このプロジェクト用の新しいディレクトリを作成します。
bashmkdir postgres-practice cd postgres-practice作成したディレクトリ内に
Dockerfileという名前のファイルを作成し、以下の内容を記述します。DockerfileFROM postgres:latest RUN apt-get update && apt-get install -y \ wget \ unzip WORKDIR /docker-entrypoint-initdb.d RUN wget -O dvdrental.zip https://neon.tech/postgresqltutorial/dvdrental.zip \ && unzip dvdrental.zip \ && rm dvdrental.zip COPY ./init.sh /docker-entrypoint-initdb.d/この
Dockerfileは、PostgreSQLの公式イメージを元に、サンプルデータをダウンロードし、初期化スクリプトを実行できる状態にします。同じディレクトリ内に
docker-compose.ymlという名前のファイルを作成し、以下の内容を記述します。このファイルは、Dockerコンテナの構成や起動方法を定義します。yamlversion: "3.9" services: db: build: dockerfile: ./Dockerfile restart: always container_name: dvd_rental_db environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: dvdrental ports: - 5432:5432 volumes: - dvd_rental_data:/var/lib/postgresql/data volumes: dvd_rental_data:この
docker-compose.ymlは、先ほど作成したDockerfileを使ってPostgreSQLコンテナをビルドし、必要な設定を行います。同じディレクトリ内に
init.shという名前のファイルを作成し、以下の内容を記述します。このシェルスクリプトは、コンテナが初めて起動する際に実行され、データベースにサンプルデータを読み込みます。bash#!/bin/bash pg_restore -U "$POSTGRES_USER" -d "$POSTGRES_DB" /docker-entrypoint-initdb.d/dvdrental.tarターミナルを開き、
cdコマンドを使って、上記3つのファイルを保存したディレクトリに移動していることを確認します。bash# カレントディレクトリがpostgres-practiceでなければ移動 cd path/to/your/postgres-practice以下のコマンドを実行して、
Docker Composeを利用してコンテナをバックグラウンドで起動・ビルドします。bashdocker compose up -d
完了条件
ターミナルで以下のコマンドを実行し、
PostgreSQLデータベースに接続できることを確認します。パスワードの入力が求められたら、docker-compose.ymlで設定したパスワード(postgres)を入力します。bashpsql -h localhost -p 5432 -U postgres -d dvdrental接続後、
dvdrental=#のようなプロンプトが表示されれば成功です。\dtコマンドを実行してテーブル一覧が表示されることなどを確認できます。接続を終了するには\qを入力します。