问题与使用Dockerfile构build图像
我有使用dockerfile来build立图像的麻烦。
dockerfile :
FROM node:4.4 MAINTAINER paas ENV NGINX_VERSION 1.11.6-1~jessie RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \ && echo "deb nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ ca-certificates \ nginx=${NGINX_VERSION} \ nginx-module-xslt \ nginx-module-geoip \ nginx-module-image-filter \ nginx-module-perl \ nginx-module-njs \ gettext-base \ curl \ && rm -rf /var/lib/apt/lists/* RUN mkdir /etc/nginx/sites-enabled # SSL Certificate Installation ADD star_dar_kz.key /etc/ssl/ # ADD star_dar_kz.pem /etc/ssl/ # ADD dhparam.pem /etc/ssl/ # ADD nginx.conf /etc/nginx/ # ADD merchants.dar.kz.conf /etc/nginx/sites-enabled COPY . /app WORKDIR /app RUN npm install --global gulp-cli RUN npm install --global bower RUN npm install RUN bower --allow-root install RUN gulp build --env prod EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
在docker build
,GPG行显示为红色,图像创build失败。 为什么?
发送构build上下文到Docker守护进程3.072kB 第1/16步:从节点:4.4 ---> 93b396996a16 第2/16步:维护者Nurbek Sadykov --->使用caching ---> e9a0bc967863 第3/16步:ENV NGINX_VERSION 1.11.6-1〜jessie --->使用caching ---> 3e87467bd365 步骤4/16:运行apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo“deb h:/nginx.org/packages/mainline/debian/ jessie nginx” >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommend --no-install-suggest -y ca-certificates nginx = $ {NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base curl && rm -rf / var / lib / apt / lists / * --->在93f88784bc24中运行 执行:gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.acoVZ86x3m --no-auto-check-trustdb --trust-model always --primary- keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive- jessie-security-automatic.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive-squeeze- automatic.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive-squeeze-stable.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg - -keyring /etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 ** gpg:从hkp服务器请求密钥7BD9BF62 pgp.mit.edu ** ** gpg:密钥7BD9BF62:公钥“nginx签名密钥”导入** ** gpg:处理总数:1 ** ** gpg:导入:1(RSA:1)** - **此处以红色标示** 获取:1 url InRelease [63.1 kB] 获取:2 url InRelease [2865 B] Ign url jessie InRelease 获取:3 url jessie-updates InRelease [145 kB] 获取:4 url amd64软件包[37.3 kB] 得到:5 url jessie Release.gpg [2373 B] 获取:6 urljessie发行[148 kB] 获取:7 url amd64软件包[613 kB] 获取:8 url amd64软件包[23.2 kB] 获取:9 url jessie / main amd64软件包[9063 kB] 在5s(1835 kB / s)中提取10.1 MB 阅读软件包列表... 阅读软件包列表... build立依赖关系树... 阅读状态信息... **某些软件包无法安装。 这可能意味着你有 要求一个不可能的情况,或者如果你正在使用unstable 一些所需的软件包尚未创build的分布 或者已经被移出Incoming **。 以下信息可能有助于解决这种情况: 以下软件包具有未满足的依赖关系: nginx-module-geoip:取决于:nginx(= 1.13.7-1〜jessie) nginx-module-image-filter:取决于:nginx(= 1.13.7-1〜jessie) nginx-module-njs:取决于:nginx(= 1.13.7-1〜jessie) nginx-module-perl:取决于:nginx(= 1.13.7-1〜jessie) nginx-module-xslt:取决于:nginx(= 1.13.7-1〜jessie) E:无法纠正问题,你已经拿破包了。 命令'/ bin / sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo“deb http://nginx.org/packages/mainline/debian / jessie nginx“>> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommend --no-install-suggest -y ca-certificates nginx = $ {NGINX_VERSION} nginx -module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module -njs gettext-base curl && rm -rf / var / lib / apt / lists / *'返回一个非零值代码:100
Dockerfile中有三个问题:
- 不正确的url到nginx包
- Nginx模块应该与nginx的版本相同
- 对于模块
nginx-module-njs
没有版本1.11.6-1~jessie
,所以我们需要再添加一个ENVvariables。
最终的Dockerfile是:
FROM node:4.4 MAINTAINER paas ENV NGINX_VERSION 1.11.6-1~jessie ENV NGINX_MODULE_NJS 1.11.6.0.1.4-2~jessie RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \ && echo 'deb http://nginx.org/packages/mainline/debian/ jessie nginx' >> /etc/apt/sources.list \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ ca-certificates \ nginx=${NGINX_VERSION} \ nginx-module-xslt=${NGINX_VERSION} \ nginx-module-geoip=${NGINX_VERSION} \ nginx-module-image-filter=${NGINX_VERSION} \ nginx-module-perl=${NGINX_VERSION} \ nginx-module-njs=${NGINX_MODULE_NJS} \ gettext-base \ curl \ && rm -rf /var/lib/apt/lists/* RUN mkdir /etc/nginx/sites-enabled # SSL Certificate Installation ADD star_dar_kz.key /etc/ssl/ # ADD star_dar_kz.pem /etc/ssl/ # ADD dhparam.pem /etc/ssl/ # ADD nginx.conf /etc/nginx/ # ADD merchants.dar.kz.conf /etc/nginx/sites-enabled COPY . /app WORKDIR /app RUN npm install --global gulp-cli RUN npm install --global bower RUN npm install RUN bower --allow-root install RUN gulp build --env prod EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]