gpt4 book ai didi

performance - 防止每次都重建整个 docker 容器?提高速度

转载 作者:行者123 更新时间:2023-12-03 15:51:09 25 4
gpt4 key购买 nike

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经常更改的文件或目录。

  • Docker 为您的每个命令拍摄“快照”。因此,当您从相同状态(没有 Dockerfile/文件/目录更改)构建新镜像时,它应该很快。

    注释/取消注释 Dockerfile 以减少 apt-get install时间可能对您没有帮助,因为它会使您的 Docker 缓存无效。

    关于performance - 防止每次都重建整个 docker 容器?提高速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632687/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com