我正在使用 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/