具有Nginx Docker映像的Debian无法更新

时间:2019-03-03 22:13:43

标签: docker nginx debian dockerfile

我正在基于Debian的docker映像中构建nginx。每次运行它时,它都会向我显示当前的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 :(得分:0)

Docker图像层充当后续构建的缓存。在Dockerfile中没有进行任何更改,您可能会得到nginx 1.10.3,因为它是从以前的版本中缓存的。

您应该使用官方的nginx image并选择所需版本的标签(例如1.15.9)来代替构建自己的nginx图像。

答案 1 :(得分:0)

首先,通常,您需要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的输出是一个像stretch这样的Debian代号,当然,Canonical合作伙伴仓库没有该段的内容。和the NGninx repo only supports 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"]