Рубрики
Uncategorized

Cache Busting в Docker

Просто поместив заканчивающие штрихи на новой аналибельной мастерской башни, тестирование дополнительных упражнений, B … Tagged с Docker, 100DASOFCode, DevOps, Nowizers.

Просто положив отделочные штрихи на новом Аналимая башня Семинар, тестирование дополнительных упражнений, создание моего контейнера Docker локально, прежде чем я нажимаю изменения в REPO, чтобы построить свой производственный образ в Docker Hub.

Поэтому, как я сижу здесь, в аэропорту Нашвилл, ожидая этого контейнера, чтобы построить и немного времени, чтобы пройти для нас до борта, я подумал, что было бы хорошим временем, чтобы сделать немного написания. Вот хитрость, которую я использую, который может сэкономить вам часы в строительных контейнерах …

Предпосылка

Я начинаю с очень базового альпийского изображения и добавить мои необходимые пакеты — несколько из APK Диспетчер пакетов, но затем я компилирую Nginx от источника. Это связано с тем, что намного проще установить правильные условия эксплуатации для сервера Nginx в контейнере. Затем, после того, как сервер NGINX скомпилирован и готов к броску, я создаю свое приложение и выбросить его в /var/www/html

Эта проблема

Теперь компиляция Nginx от источника требуется время. У меня есть отдельные Беги Stanzas в DockerFile, чтобы извлечь выгоду из слоя изображения, которые предоставляют контейнерные изображения, но Docker не всегда велик при обнаружении изменений. Если я сделаю несколько изменений в веб-приложении, Docker не всегда копирует новые файлы.

Чтобы быстро исправить это, можно обрезать построенные изображения в локальном кеше — но это означает, что начиная с вершины, что означает перекомпиляция Nginx, которая занимает много времени.

Решение

Как мы скажем докере явно, с чего начать? Просто добавьте ENV между вашими статическими и динамическими действиями, затем измените небольшую переменную между сборками.

FROM node:8-alpine

# Install base packages
RUN apk -U add wget tar gzip git asciidoctor

# Install nginx
RUN \
  build_pkgs="build-base linux-headers openssl-dev pcre-dev wget zlib-dev" && \
  runtime_pkgs="ca-certificates openssl pcre zlib" && \
  apk --update add ${build_pkgs} ${runtime_pkgs} && \
  cd /tmp && \
  wget http://nginx.org/download/nginx-1.15.8.tar.gz && \
  tar xzf nginx-1.15.8.tar.gz && \
  cd /tmp/nginx-1.15.8 && \
  ./configure \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/tmp/run/nginx.pid \
    --lock-path=/tmp/run/nginx.lock \
    --http-client-body-temp-path=/tmp/cache/nginx/client_temp \
    --http-proxy-temp-path=/tmp/cache/nginx/proxy_temp \
    --http-fastcgi-temp-path=/tmp/cache/nginx/fastcgi_temp \
    --http-uwsgi-temp-path=/tmp/cache/nginx/uwsgi_temp \
    --http-scgi-temp-path=/tmp/cache/nginx/scgi_temp \
    --user=nginx \
    --group=nginx \
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_sub_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_stub_status_module \
    --with-http_auth_request_module \
    --with-mail \
    --with-mail_ssl_module \
    --with-file-aio \
    --with-ipv6 \
    --with-threads \
    --with-stream \
    --with-stream_ssl_module \
    --with-http_slice_module \
    --with-http_v2_module && \
  make && \
  make install && \
  ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log && \
  adduser -D nginx && \
  rm -rf /tmp/* && \
  apk del ${build_pkgs} && \
  rm -rf /var/cache/apk/* && \
  mkdir -p /tmp/cache/nginx/scgi_temp && \
  mkdir -p /tmp/cache/nginx/uwsgi_temp && \
  mkdir -p /tmp/cache/nginx/fastcgi_temp && \
  mkdir -p /tmp/cache/nginx/proxy_temp && \
  mkdir -p /tmp/cache/nginx/client_temp && \
  mkdir -p /tmp/run

ENV cacheBUSTER v9001

COPY conf/nginx.conf /etc/nginx/nginx.conf

COPY webapp/* /var/www/html/

Теперь просто измените это Cachebuster Определение env для некоторой другой строки и наслаждайтесь кэшированным слоем изображения с nginx, в состоянии вытащить в свежие данные приложения каждый раз!

Оригинал: «https://dev.to/kenmoini/cache-busting-in-docker-2ngh»