Debian с образом докера nginx не будет обновляться - PullRequest
0 голосов
/ 04 марта 2019

Я создаю nginx в образе докера на основе Debian.Каждый раз, когда я запускаю его, он показывает текущую версию nginx nginx / 1.10.3.Мне нужно, чтобы загрузить последнюю стабильную версию nginx.

Это мой Dockerfile:

FROM debian:latest

RUN apt-get -y update

RUN apt-get install -yq gnupg2
RUN apt-get install -yq software-properties-common
RUN apt-get install -yq lsb-release
RUN apt-get install -yq curl

RUN add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"
RUN add-apt-repository "deb http://nginx.org/packages/debian `lsb_release -cs` nginx"

RUN apt-get install -y nginx

RUN rm -rf /var/lib/apt/lists/

RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

EXPOSE 80
CMD ["/usr/sbin/nginx"]

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Во-первых, тривиально, вам нужно apt-get update, чтобы получить индексные файлы из репозиториев, которые вы добавили до того, как apt найдет там какие-либо пакеты.

RUN add-apt-repository blah blah
RUN apt-get update -y   # Add this
RUN apt-get install -y whatever

Но у вас также есть недопустимые репозиториив разделе add-apt-repository.Вывод lsb_release -sc представляет собой кодовое имя Debian, такое как stretch, для которого, конечно, в репозитории Canonical Partner нет раздела;и репозиторий NGninx поддерживает только Debian squeeze (хотя я ожидаю, что пакеты будут работать и на более новых версиях Debian).

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

FROM debian:latest

RUN apt-get -y update
RUN apt-get install -yq gnupg2 \
    software-properties-common curl # lsb-release

# XXX FIXME: the use of [trusted=yes] is really quick and dirty
RUN add-apt-repository "deb [trusted=yes] http://archive.canonical.com/ bionic partner"
RUN add-apt-repository "deb [trusted=yes] http://nginx.org/packages/debian squeeze nginx"

RUN apt-get update -y    
RUN apt-get install -y nginx

RUN rm -rf /var/lib/apt/lists/

RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

EXPOSE 80
CMD ["/usr/sbin/nginx"]
0 голосов
/ 04 марта 2019

Слои изображений Docker служат кешем для последующих сборок.Без каких-либо изменений в Dockerfile вы, вероятно, получите nginx 1.10.3, потому что он был кэширован из предыдущей сборки.

Вместо создания собственного образа nginx, вы должны использовать официальный nginximage и выберите тег (например, 1.15.9) для нужной версии.

...