我正在使用 azk 并且我的系统依赖于额外的包。我可以使用以下方法安装它们(因为我使用的是基于 Ubuntu 的镜像):

apt-get -yq update && apt-get install -y libqtwebkit-dev qt4-qmake

我可以将此步骤添加到配置中吗?在 Azkfile.js 中,它看起来像:
// ...
provision: [
  "apt-get -yq update",
  "apt-get install -y libqtwebkit-dev qt4-qmake",
  "bundle install --path /azk/bundler",
  "bundle exec rake db:create",
  "bundle exec rake db:migrate",
]

还是创建一个新的 Docker 镜像更好?

最佳答案

供应步骤在单独的容器中运行,因此在供应步骤之后,其中生成的所有数据都将丢失,除非您将它们持久化。这就是为什么您可能将 bundle 文件夹设为 persistent folders

从那以后,您应该在这种情况下使用 Dockerfile。它看起来像这样:

FROM azukiapp/ruby:2.2.2 # or the image you were using previously
RUN apt-get -yq update && \
    apt-get install -y libqtwebkit-dev qt4-qmake && \
    apt-get clean -qq && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # Keeping the image as small as possible

之后,您应该编辑您的 Azkfile.js 并替换主系统的 image 属性以使用创建的 Dockerfile (您可以查看 azk docs here ):
image: { dockerfile: './PATH_TO_DOCKERFILE' },

最后,当您运行 azk start 时,azk 将构建此 Dockerfile 并将其与安装的所有依赖项一起使用。

提示:如果你想强制 azk 重建你的 Dockerfile,只需将 -B 标志传递给 azk start

关于ruby-on-rails-4 - 使用azk时如何管理系统依赖项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32995241/

10-15 21:56