docker-composeとpsqlを使ってアプリからDBコンテナに接続する

docker-compose.yml

services:
  app3001:
    build:
      context: .
      dockerfile: ./docker/rails/Dockerfile
    command: /bin/sh -c "rm -f ./tmp/pids/server.pid && bundle exec rails s -p 3001 -b '0.0.0.0'"
    ports:
      - '3001:3001'
    volumes:
      - /var/tmp
      - .:/app
    depends_on:
      - db5432
    extends:
      file: ./docker/postgres/password.yml
      service: password
    restart: always

  db5432:
    image: postgres
    ports:
      - '5432:5432'
    volumes:
      - db_data5432:/var/lib/postgresql/data
    extends:
      file: ./docker/postgres/password.yml
      service: password
    restart: always

※コンテナ名にポート番号を書いているのは、開発環境のDockerでポートを分けて並列にアプリとかDBを立ち上げているから

アプリのコンテナにログイン(app3001はコンテナ名)

$ docker-compose run app3001 bash

psql でデータベースコンテナ内のPostgreSQLに接続する(db5432はコンテナ名)

$ psql -h db5432

注意

  1. アプリコンテナ側にもPostgreSQLがインストールされている必要があるのでDockerfileに書いてビルドしておく。
  2. 同じネットワークに接続している。

こういうの

RUN apt-get update -qq && apt-get install -y postgresql

おわり

公開日