我正在基于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"]
答案 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"]