Если вы ищете простой способ продолжить использование стабильной версии во время компиляции nginx из исходного кода, поскольку для него нет единого прямого URL-адреса, то вы можете передать аргумент сборки в ваш Dockerfile, например: это:
...
ARG NGINX_STABLE_VERSION
RUN wget http://nginx.org/download/nginx-${NGINX_STABLE_VERSION}.tar.gz
...
И выполните команду сборки, как показано ниже, чтобы продолжить загрузку версии nginx на основе переданного аргумента:
docker build --build-arg NGINX_STABLE_VERSION=1.14.2 .
Однако, если вы ищете, как продолжать использовать официальный образ докера для nginx с вашими пользовательскими модулями - при условии, что все используемые вами пользовательские модули поддерживают функцию динамических модулей, такую как модуль vts - тогда вы можете сделать использовать многоэтапные сборки и использовать динамические модули nginx
функция.
Согласно nginx-module-vts changelog существует поддержка компиляции модуля как динамического модуля, так что вы можете сделать многоэтапную сборку, которая компилирует nginx с нужным вам модулем, а затем скопировать сгенерированный файл в изображение nginx с той же версией, чтобы он работал.
Стабильные изображения Nginx можно найти в здесь с тегом stable
word.
Все, что вам нужно сделать сейчас, это изменить Dockerfile и заставить его использовать динамические модули, а затем добавить еще один этап для использования стабильного образа с новым модулем, созданным на первом этапе, и вы можете добавить аргумент во время построить например:
...
ARG NGINX_STABLE_VERSION
RUN wget http://nginx.org/download/nginx-${NGINX_STABLE_VERSION}.tar.gz
...
И запустить сборку так:
docker build --build-arg NGINX_STABLE_VERSION=1.14.2 .
Обновление:
Nginx не предоставляет одну ссылку, которую вы можете использовать для получения стабильной версии каждый раз, так что вы можете перейти к разбору html страницы загрузки, как показано ниже, чтобы получать последнюю ссылку для загрузки стабильной версии:
Мы полагаемся на HTML-страницу, которая не является наиболее надежным решением в долгосрочной перспективе.
echo "http://nginx.org$(curl -s http://nginx.org/en/download.html | grep -oP 'Stable version.*?\K(/download/.*?tar.gz)')"
Выход:
http://nginx.org/download/nginx-1.14.2.tar.gz
В вашем Dockerfile это может быть так:
Убедитесь, что у вас установлен curl
RUN curl "http://nginx.org$(curl -s http://nginx.org/en/download.html | grep -oP 'Stable version.*?\K(/download/.*?tar.gz)')" --output nginx.tar.gz