👋

rails dbconsole 時に発生した Couldn't find database client: psql に対応する

2024/01/10に公開

概要

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