👋
rails dbconsole 時に発生した Couldn't find database client: psql に対応する
概要
bin/rails dbconsole
で db に接続した際に Couldn't find database client: psql. Check your $PATH and try again.
が発生した際の対応メモです。
結論
postgresql-client
を追加する
環境
Docker: 24.0.7
Rails: 7.1.2
Ruby: 3.2
PostgreSQL: 15
状況
Docker で構築したRails + PostgreSQL 環境がある状態で rails dbconsole
を用いてdbにアクセスしようとしたところタイトル通りのエラーが発生しました。
❯ docker-compose exec api bin/rails dbconsole
Couldn't find database client: psql. Check your $PATH and try again
原因
エラー文通りだが database にアクセスするためのクライアントがないよと言っています。
Docker ファイルは以下のようになっていました。
FROM ruby:3.2.2
ENV RUBY_VERSION=3.3.3
ENV APP=/app
RUN mkdir -p ${APP}
WORKDIR ${APP}
COPY Gemfile ${APP}/Gemfile
COPY Gemfile.lock ${APP}/Gemfile.lock
RUN gem update --system ${RUBY_VERSION} && bundle install
COPY . ${APP}
CMD ["bin/rails", "s", "-b", "0.0.0.0"]
見た通り接続用のクライアントアプリケーションがなかったため、以下のようにする必要がありました。
FROM ruby:3.2.2
ENV RUBY_VERSION=3.3.3
## 追加
RUN apt-get update -qq && apt-get install -y postgresql-client
ENV APP=/app
RUN mkdir -p ${APP}
WORKDIR ${APP}
COPY Gemfile ${APP}/Gemfile
COPY Gemfile.lock ${APP}/Gemfile.lock
RUN gem update --system ${RUBY_VERSION} && bundle install
COPY . ${APP}
CMD ["bin/rails", "s", "-b", "0.0.0.0"]
Discussion