码头工人由于高山错误而无法建造

时间:2018-12-10 16:55:40

标签: docker alpine

嗨,我正在尝试构建一个docker,而Docker文件如下所示。

FROM alpine

LABEL description "Nginx + uWSGI + Flask based on Alpine Linux and managed by Supervisord"

# Copy python requirements file
COPY requirements.txt /tmp/requirements.txt

RUN apk add --no-cache \
    python3 \
    bash \
    nginx \
    uwsgi \
    uwsgi-python3 \
    supervisor && \
    python3 -m ensurepip && \
    rm -r /usr/lib/python*/ensurepip && \
    pip3 install --upgrade pip setuptools && \
    pip3 install -r /tmp/requirements.txt && \
    rm /etc/nginx/conf.d/default.conf && \
    rm -r /root/.cache

# Copy the Nginx global conf
COPY nginx.conf /etc/nginx/
# Copy the Flask Nginx site conf
COPY flask-site-nginx.conf /etc/nginx/conf.d/
# Copy the base uWSGI ini file to enable default dynamic uwsgi process number
COPY uwsgi.ini /etc/uwsgi/
# Custom Supervisord config
COPY supervisord.conf /etc/supervisord.conf

# Add demo app
COPY ./app /app
WORKDIR /app

CMD ["/usr/bin/supervisord"]

错误看起来像

Sending build context to Docker daemon  250.9kB
Step 1/11 : FROM alpine
 ---> 196d12cf6ab1
Step 2/11 : LABEL description "Nginx + uWSGI + Flask based on Alpine Linux and managed by Supervisord"
 ---> Using cache
 ---> d8d38c761b8d
Step 3/11 : COPY requirements.txt /tmp/requirements.txt
 ---> Using cache
 ---> cb29eb34ca46
Step 4/11 : RUN apk add --no-cache     python3     bash     nginx     uwsgi     uwsgi-python3     supervisor &&     python3 -m ensurepip &&     rm -r /usr/lib/python*/ensurepip &&     pip3 install --upgrade pip setuptools &&     pip3 install -r /tmp/requirements.txt &&     rm /etc/nginx/conf.d/default.conf &&     rm -r /root/.cache
 ---> Running in 3d568d2620dd
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
ERROR: unsatisfiable constraints:
  bash (missing):
    required by: world[bash]
  nginx (missing):
    required by: world[nginx]
  python3 (missing):
    required by: world[python3]
  supervisor (missing):
    required by: world[supervisor]
  uwsgi (missing):
    required by: world[uwsgi]
  uwsgi-python3 (missing):
    required by: world[uwsgi-python3]
The command '/bin/sh -c apk add --no-cache     python3     bash     nginx     uwsgi     uwsgi-python3     supervisor &&     python3 -m ensurepip &&     rm -r /usr/lib/python*/ensurepip &&     pip3 install --upgrade pip setuptools &&     pip3 install -r /tmp/requirements.txt &&     rm /etc/nginx/conf.d/default.conf &&     rm -r /root/.cache' returned a non-zero code: 6

一个月前,它的建筑还不错。由于对Docker的了解有限,所以我无法弄清楚是什么导致了错误。谷歌的快速搜索导致了这两个链接:link1 link2但它们都不起作用。

5 个答案:

答案 0 :(得分:0)

该行:

WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)

基本上说您处于脱机状态,或者alpinelinux存储库已关闭。我在互联网上找不到任何有关它的信息,但过去曾发生过几次。或者它可能是您和CDN之间某个地方的网络问题。

您随时可以从http://dl-cdn.alpinelinux.org/alpine/MIRRORS.txt中挑选自己的镜像,并按以下方式进行设置:

RUN echo http://repository.fit.cvut.cz/mirrors/alpine/v3.8/main > /etc/apk/repositories; \
    echo http://repository.fit.cvut.cz/mirrors/alpine/v3.8/community >> /etc/apk/repositories

(根据您的版本更改v3.8


也正如@emix指出的那样,您永远不要使用:lastest标签作为基础。例如,使用3.8或具有所需软件包版本的软件包。

答案 1 :(得分:0)

使用标志“ --network host”构建docker解决了该问题。这是link

答案 2 :(得分:0)

如果您能够手动下载文件,请尝试重新启动docker服务。它对我有用。.

答案 3 :(得分:0)

为标题提供更通用的故障排除答案。在另一个容器中测试您的docker命令。这可能是您不介意破坏的另一个正在运行的容器,或者可能是您可以在shell上运行Dockerfile命令的基本容器(在本例中为Alpine)。像最初的问题一样,网络可能不是解决问题的方法,但是在其他情况下很好。

apk错误消息并不总是最有用的。看下面的例子:

/ # apk add --no-cache influxdb-client
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  influxdb-client (missing):
    required by: world[influxdb-client]
/ # 
/ # 
/ # 
/ # 
/ # apk add --no-cache influxdb
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
(1/1) Installing influxdb (1.8.0-r1)
Executing influxdb-1.8.0-r1.pre-install
Executing busybox-1.31.1-r19.trigger
OK: 613 MiB in 98 packages

顺便说一句,https://pkgs.alpinelinux.org/packages是查找Alpine软件包名称的好地方,这将解决上面的示例。

答案 4 :(得分:0)

另一个修复 -

我将 8.8.8.8 添加到我的 /etc/resolv.conf 并重新启动了 docker 守护进程。它为我解决了这个问题。