首页 > 解决方案 > 从 AzureDevOps 运行 Dockerfile 时无法从 jonathonf 存储库获取包

问题描述

我有一个 Dockerfile,它从名为 jonathonf 的源获取包,但无法从该存储库下载一些包。任何人都可以帮我解决问题吗?我已经非常努力地解决了这个问题,但我无法解决它。

Dockerfile

FROM ubuntu:16.04
LABEL maintainer="Praveen"

# Install Python 3.6, Node & Yarn
RUN apt-get update -y \
  && apt-get install -y software-properties-common curl git \
  && add-apt-repository ppa:jonathonf/python-3.6 \
  #These three lines are added to resolve jonathonf issue
  #&& add-apt-repository ppa:deadsnakes/ppa \
  #&& apt-get update -y \
  #&& apt-get install python3.6 -y \
  #&& apt-get npm \
  #These three lines are added to resolve jonathonf issue
  #&& add-apt-repository ppa:deadsnakes/ppa \
  && curl --silent --location https://deb.nodesource.com/setup_10.x | bash - \
  && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
  && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
  && apt-get update -y \
  && apt-get install -y build-essential python3.6 python3.6-dev python3-pip python3.6-venv nodejs --no-install-recommends yarn \
  && apt-get clean \
  && python3.6 -m pip install pip --upgrade \
  && python3.6 -m pip install wheel

# Install BigARTM
WORKDIR /tmp
RUN apt-get update -y \
  && apt-get install -y libboost-all-dev python3-setuptools cmake \
  && pip install numpy scipy pandas protobuf==3.0.0 tqdm \
  && git clone --branch=v0.9.0 https://github.com/bigartm/bigartm.git \
  && cd bigartm && mkdir build && cd build \
  && cmake -DPYTHON=python3.6 -DCMAKE_INSTALL_PREFIX=/usr/local .. \
  && make && make install
ENV ARTM_SHARED_LIBRARY=/usr/local/lib/libartm.so

# Install Model
WORKDIR /www
COPY application/python_model/requirements.txt ./python_model/requirements.txt
RUN pip install --no-cache-dir -r ./python_model/requirements.txt \
  && python3.6 -m spacy download en \
  && python3.6 -m nltk.downloader punkt stopwords averaged_perceptron_tagger

# Install NodeJS App
ADD application/package.json application/yarn.lock ./
RUN npm install -g yarn \
  && yarn install \
  && yarn cache clean

ADD application ./

CMD ["yarn", "start"]

错误:

apt-get update
Hit:1 http://security.ubuntu.com/ubuntu xenial-security InRelease
Ign:2 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial InRelease
Hit:3 http://archive.ubuntu.com/ubuntu xenial InRelease
Hit:4 http://archive.ubuntu.com/ubuntu xenial-updates InRelease
Ign:5 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial Release
Hit:6 http://archive.ubuntu.com/ubuntu xenial-backports InRelease
Ign:7 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main amd64 Packages
Ign:8 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main all Packages
Ign:7 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main amd64 Packages
Ign:8 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main all Packages
Ign:7 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main amd64 Packages
Ign:8 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main all Packages
Ign:7 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main amd64 Packages
Ign:8 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main all Packages
Ign:7 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main amd64 Packages
Ign:8 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main all Packages
Err:7 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main amd64 Packages
  403  Forbidden
Ign:8 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main all Packages
Reading package lists...
W: The repository 'http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial Release' does not have a Release file.
E: **Failed to fetch http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu/dists/xenial/main/binary-amd64/Packages  403  Forbidden**
E: Some index files failed to download. They have been ignored, or old ones used instead.
Error executing command, exiting
The command '/bin/sh -c apt-get update -y   && apt-get install -y software-properties-common curl git   && add-apt-repository ppa:jonathonf/python-3.6   && curl --silent --location https://deb.nodesource.com/setup_10.x | bash -   && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -   && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list   && apt-get update -y   && apt-get install -y build-essential python3.6 python3.6-dev python3-pip python3.6-venv nodejs --no-install-recommends yarn   && apt-get clean   && python3.6 -m pip install pip --upgrade   && python3.6 -m pip install wheel' returned a non-zero code: 1

尝试 ubuntu:18.04 后出错

Step 10/22 : ADD application/package.json application/yarn.lock ./
 ---> ba08da3d1daa
Step 11/22 : RUN npm install -g yarn   && yarn install   && yarn cache clean
 ---> Running in 72517b8173b6
npm ERR! code EEXIST
npm ERR! syscall symlink
npm ERR! path ../lib/node_modules/yarn/bin/yarn.js
npm ERR! dest /usr/bin/yarn
npm ERR! errno -17
npm ERR! EEXIST: file already exists, symlink '../lib/node_modules/yarn/bin/yarn.js' -> '/usr/bin/yarn'
npm ERR! File exists: /usr/bin/yarn
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-12-30T10_10_54_161Z-debug.log
The command '/bin/sh -c npm install -g yarn   && yarn install   && yarn cache clean' returned a non-zero code: 239
##[error]The command '/bin/sh -c npm install -g yarn   && yarn install   && yarn cache clean' returned a non-zero code: 239
##[error]The process '/usr/bin/docker' failed with exit code 239

标签: dockerdockerfile

解决方案


正如另一个答案中提到的,jonathonf/python3.6 PPA已被删除,不幸的是,这是在 Ubuntu 16.04 上安装 Python3.6 的“通常”方式。

如果 Ubuntu 版本不需要是 16.04,您可以改用 Ubuntu 18.04 (Bionic) 映像(ubuntu:bionicubuntu:18.04)。它已经内置了apt用于安装 Python3.6 的替代源。

root@2c4e419e7489:/# apt show python3
Package: python3
Version: 3.6.7-1~18.04
Priority: important
Section: python
Source: python3-defaults
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Matthias Klose <doko@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 191 kB
...
APT-Sources: http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
Description: interactive high-level object-oriented language (default python3 version)

root@2c4e419e7489:/# python3 -V
Python 3.6.9

这是一个使用ubuntu:bionic并安装 Python3.6nodeyarn. 请注意,我将其拆分为多个RUN语句,以便我可以正确注释掉一些额外的信息。如果您愿意,可以将它们组合起来。我也不知道你是否还有其他步骤,但你的帖子只提到了这 3 个。

FROM ubuntu:bionic
LABEL maintainer="Praveen"

# Install essentials
RUN apt-get update -y \
    && apt-get install -y build-essential software-properties-common curl git

# Install Python 3.6
RUN apt-get install -y python3-pip \
    && apt-get clean \
    && python3 -m pip install --upgrade pip

# Install Node (also installs npm)
#
# Based on official instructions for Ubuntu and Debian
# https://github.com/nodesource/distributions/blob/master/README.md#debinstall
#
# The latest is setup_13.x, but I copied your original command that uses setup10.x.
# It might be better to use setup_13.x instead.
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
    && apt-get install -y nodejs

# Install Yarn
#
# Based on official instructions for Ubuntu and Debian
# https://yarnpkg.com/lang/en/docs/install/#debian-stable
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
    && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
    && apt-get update \
    && apt-get install -y yarn

这是构建的 Docker 映像的输出:

root@34c1457911df:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
root@34c1457911df:/# python3 -V
Python 3.6.9
root@34c1457911df:/# python3 -m pip -V
pip 19.3.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
root@34c1457911df:/# node --version
v10.18.0
root@34c1457911df:/# npm --version
6.13.4
root@34c1457911df:/# yarn --version
1.21.1

您尝试时收到的已发布错误消息ubuntu:18.04

Step 11/22 : RUN npm install -g yarn   && yarn install   && yarn cache clean
 ---> Running in 72517b8173b6
npm ERR! code EEXIST
npm ERR! syscall symlink
npm ERR! path ../lib/node_modules/yarn/bin/yarn.js
npm ERR! dest /usr/bin/yarn
npm ERR! errno -17
npm ERR! EEXIST: file already exists, symlink '../lib/node_modules/yarn/bin/yarn.js' -> '/usr/bin/yarn'
npm ERR! File exists: /usr/bin/yarn

表示您已经安装yarn(可能正在使用apt install yarn),然后您尝试npm. 除非您这样做,否则 NPM 不会覆盖以前的安装--force 。但是,由于您已经从 安装了它apt,因此您无需使用 再次安装它npm。(虽然我不使用yarn,所以我不知道与yarnfromapt或 from是否有区别npm。)


推荐阅读