Docker-newbie here ...
我正在追踪pango gem的docker-compose构建错误。 mkmf.log文件中显示的检查之一是:
have_package:检查pango版本(> = 1.14.0)... -------------------- no
我安装了pango 3.1.0,结果应该是"是",但是我想知道" has_package"的语法是什么?应该有一个< = 1.14.0。这只是一个错字还是构建失败的原因?我在哪里可以找到进行此检查的实际构建命令?
如果以上问题不存在,那么链接进程似乎无法找到libpango1.0-dev库。我手动安装,但库位于以下目录中:
./ USR /共享/ DOC /
但是看看docker构建目录,似乎这些库应该在docker目录中很深。我不知道如何在那里安装它们。 docker构建日志说明了这一点:
无法运行' apt-get install -V -y libpango1.0-dev'
我的其他基于c-libs的宝石行为正常并且没有这个问题
任何指导都将不胜感激!!
答案 0 :(得分:0)
解决方案:在我们的开发环境(Ubuntu 14.04)上,此命令运行良好:
**apt-get install libpango1.0-dev**
但是当我们的docker容器正在构建时,它实例化了一个Debian 8(Jessie)。我们登录了该实例的bash(即使构建因错误而终止),并在该环境中尝试了 apt-get install libpango1.0-dev 命令。有趣的是,该命令失败(文件“无法找到”)!
然后我们在Debian上进行了 apt-get update ,它加载了大量资源。在apt-get更新之后,apt-get安装工作了!我们不确定原因,但确实如此!
我们原始的docker文件确实调用了apt-get更新,但在我们尝试安装libpango1.0-dev之前,它显然没有被执行。这是因为我们使用了一堆ONBUILD命令。所以我们删除了所有的ONBUILD命令并使用了这样的docker文件:
FROM ruby:2.2
RUN apt-get update -qq && apt-get install -y build-essential nodejs libpq-dev
RUN bundle config --global frozen 1
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY Gemfile /usr/src/app/
COPY Gemfile.lock /usr/src/app/
RUN bundle install
COPY . /usr/src/app
CMD bundle exec puma -C config/puma.rb
这就是我们问题的解决方案!
[但它给我们留下了一些问题:a)为什么Debian 8需要apt-update才能成功找到/安装我们的pango库; b)为什么我们使用ONBUILDS的原始docker文件无法进行apt-update在试图获得pango库之前。]