Docker 构建无法在 Sinatra 项目中安装 pg gem

chh*_*ris 3 postgresql sinatra bundler pg docker

我已经查看了 SO 上所有安装 Postgres gem 时出现类似错误的帖子pg

我的问题很独特:我可以通过 Gemfile 成功地将 Postgres 添加到我的 Sinatra Ruby 项目中,bundle install但是在构建 Docker 映像时,它安装失败pg,并出现以下错误:

ERROR:  Error installing pg:
ERROR: Failed to build gem native extension.

current directory: /usr/local/bundle/gems/pg-0.19.0/ext
/usr/local/bin/ruby -r ./siteconf20170113-7-ottv1k.rb extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
  --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Run Code Online (Sandbox Code Playgroud)

我已经尝试了类似答案中建议的所有内容:

  • Brew 安装/卸载,
  • gem install / uninstall 指定两个文件的路径:pg_configlibpq-fe.h
  • ETC。

由于我对 Docker 不太熟悉,所以使用 Docker 安装数据库时我是否缺少一些东西?

提前非常感谢任何帮助。谢谢。

Kir*_*ill 6

由于缺少libpq-dev软件包,您收到此错误。

以下是用于安装 gem 的基于 ubuntu 的最小 Dockerfile pg

FROM ruby:2.6.6-slim-buster

RUN apt update && apt install -y \
        build-essential libpq-dev  \
     && rm -rf /var/lib/apt/lists/*

RUN gem install pg
Run Code Online (Sandbox Code Playgroud)