# PostgreSQL の使用方法 ## 起動方法(コンテナ) - Docker デーモン(DockerDesktop)を立ち上げる。 - docker-compose.yml ファイルを作成して、下記コマンド実行。 ``` docker-compose up -d ``` - 「-d」は、バックグラウンド実行のオプション ## docker-compose.yml - ブラウザでの確認のための pgweb の立ち上げも同時に行っている。 ``` version: '3.8' services: # PostgreSQL立ち上げ db: image: postgres:14-alpine # コンテナが落ちた際の自動再起動の設定 restart: always environment: TZ: ${TIME_ZONE} # コンテナ自体のタイムゾーンの設定(デフォルトはUTCなので9時間ずれ) PGTZ: ${TIME_ZONE} # ポスグレのタイムゾーン設定 POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} ports: - "5432:5432" volumes: # コンテナ停止してもdataを残したいなら必須の設定 # ローカルの隠しフォルダにデータがマウントされる # データ削除の為には、docker volume pruneなど必要 # - postgres_data:/var/lib/postgresql/data # 右辺の位置にsqlを置くと、起動時に自動実行されるため、initにsqlを置いてマウントしている - ./init:/docker-entrypoint-initdb.d # デフォルト設定では、同じcompose-file内のサービスは同じネットワークに入るので、ローカル開発では基本不要な設定 # networks: # - app_network # DBをhtmlで確認するためのpgweb立ち上げ # 現状、initの事前実行でdb起動が遅れるためか、初回はpgwebが起動失敗で落ちる pgweb: image: sosedoff/pgweb container_name: "pgweb" ports: - "8081:8081" environment: # 自動でログインするための変数設定。これがないと起動のたびにDBのURLを利用したログインが必要 # フォーマットはpostgres://ユーザ名:パスワード@DBサービス名:5432/DB名?sslmode=disable PGWEB_DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable depends_on: - db # networks: # - app_network # volumes: # postgres_data: ``` ## .env 以下は一例 ``` TIME_ZONE=Asia/Tokyo POSTGRES_USER=myuser POSTGRES_PASSWORD=mypassword POSTGRES_DB=mydb ```