背景
既存のRailsのプロジェクトに開発環境のみDockerを導入しようと試みております。
詰まっているエラー
docker-compose buildは上手くいったが、DB作成の時に以下のようなエラーになる。
$ docker-compose run web rake db:create [+] Running 1/0 ⠿ Container test-app-server-db-1 Running 0.0s SCRAM authentication requires libpq version 10 or above Couldn't create 'test-app-server_development' database. Please check your configuration. rake aborted!
やったこと
- パスワードを設定しないとローカルのPostgreSQLにログイン出来ないようにした
- ローカルのpg_hba.confを編集(trustをmd5に変更)
# TYPE DATABASE USER ADDRESS METHOD local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. local replication all md5 host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5 host all all all md5
- ローカルのpostgresql.confを編集(以下を追記)
password_encryption = md5
現状のDocker関連のファイル設定
Dockerfile
FROM ruby:2.6.0 RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y postgresql-client --no-install-recommends && rm -rf /var/lib/apt/lists/* RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs WORKDIR /test-app ADD Gemfile /test-app/Gemfile ADD Gemfile.lock /test-app/Gemfile.lock RUN gem install bundler RUN bundle install ADD . /test-app
docker-compose.yml
version: '3' services: db: image: postgres ports: - '5432:5432' environment: POSTGRES_PASSWORD: password volumes: - postgresql-data:/var/lib/postgresql/data web: build: context: . dockerfile: Dockerfile command: bundle exec rails s -p 3000 -b '0.0.0.0' tty: true stdin_open: true depends_on: - db ports: - "3000:3000" volumes: - .:/test-app volumes: postgresql-data: driver: local
database.yml
default: &default adapter: postgresql encoding: unicode pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default host: db username: test_user port: 5432 password: password database: test-app_development
上記の「SCRAM authentication requires libpq version 10 or above」の解決する方法が分かりません。
※Dockerを使わない場合はこのエラーは発生しません。
是非、アドバイスなどよろしくお願いいたします。
あなたの回答
tips
プレビュー