作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Dockerizing 一个 Rails 应用程序需要很长时间来重建容器。
我试图在最后添加尽可能多的内容,但我想更多是不可能的。
关于如何提高我的 docker 容器的重建速度的任何建议?
或者关于如何改进docker文件的一般建议,每次重建都需要很长时间。
还有没有聪明的方法来检查例如目录是否已经存在而不会引发错误并且无法完成构建?
FROM ruby:2.2.0
EXPOSE 80
EXPOSE 22
ENV RAILS_ENV production
RUN apt-get update -qq && apt-get install -y build-essential
# --------------------------------------
# GEM PRE-REQ
# --------------------------------------
#RUN apt-get install -y libpq-dev
#RUN apt-get install -y libxml2-dev libxslt1-dev #nokigiri
#RUN apt-get install -y libqt4-webkit libqt4-dev xvfb
RUN cd /tmp && git clone https://github.com/maxmind/geoipupdate && cd geoipupdate && ./bootstrap
# --------------------------------------
# HOME FOLDER
# --------------------------------------
WORKDIR /srv/my
ADD . /srv/my
ADD ./Gemfile /srv/my/Gemfile
ADD ./Gemfile.lock /srv/my/Gemfile.lock
#RUN mkdir /srv/my
RUN bundle install --without development test
#RUN bundle install foreman
RUN bundle exec rake assets:precompile --trace
# --------------------------------------
# UNICORN AND NGINX
# --------------------------------------
ADD ./config/_server/unicorn_my /etc/init.d/unicorn_my
RUN chmod 755 /etc/init.d/unicorn_my
RUN update-rc.d unicorn_my defaults
ADD ./config/_server/nginx.conf /etc/nginx/sites-available/default
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
#RUN chown -R www-data:www-data /var/lib/nginx ??
ADD ./config/_server/nginx.conf /etc/nginx/my.conf
ADD ./config/_server/my.conf /etc/nginx/sites-enabled/my.conf
ADD ./config/_server/unicorn.rb /srv/my/config/unicorn.rb
ADD ./config/_server/Procfile /srv/my/Procfile
#RUN service unicorn_my start
#RUN foreman start -f ./Procfile
最佳答案
您可以通过以下方式提高构建速度:
apt-get
/yum
进入单个命令,然后清理 apt/yum 缓存。它可以减小您的图像大小。 RUN \
apt-get -y update && \
apt-get -y install curl build-essential nginx && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
ADD
/COPY
越晚越好,因为它会使 Docker 图像缓存无效。 apt-get
、下载大文件等)放在 ADD
之后/COPY
经常更改的文件或目录。 apt-get install
时间可能对您没有帮助,因为它会使您的 Docker 缓存无效。
关于performance - 防止每次都重建整个 docker 容器?提高速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632687/
我是一名优秀的程序员,十分优秀!