Docker构建无法在Sinatra项目

时间:2017-01-13 07:24:27

标签: postgresql docker sinatra bundler pg

我已经审核了SO上的所有帖子,并在安装Postgres pg gem时出现类似错误。

我的问题是独一无二的:我可以通过Gemfile和bundle install成功地将Postgres添加到我的Sinatra Ruby项目中 - 但是在构建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 ***

我尝试过类似答案中提出的所有建议:

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

由于我对Docker不太熟悉,有什么东西我在使用Docker安装数据库时缺少什么?

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

2 个答案:

答案 0 :(得分:2)

如果仍有问题,请确保您的泊坞窗图片已安装postgresql-clientpostgresql-devbuild-essentials。包含类似

的内容
...
RUN apk update && apk upgrade
RUN apk add postgresql-client build-dependencies postgresql-dev
...
在运行bundle install之前,在Dockerfile中

postgresql-dev包中包含标题和其他与开发相关的文件。

答案 1 :(得分:0)

由于缺少libpq-dev软件包而导致此错误。

这是用于安装pg gem的最小的基于ubuntu的Dockerfile:

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