无法构建python docker镜像

时间:2017-06-26 13:57:01

标签: python image pandas docker dockerfile

我正在尝试使用以下dockerfile构建python的docker镜像: 我希望拥有最小的图像,所以我使用elyase / conda:2.7图像作为基础:

 # Pull base image.
FROM elyase/conda:2.7
MAINTAINER me
RUN opkg-install --verbosity=4 curl python-dateutil python-botocore && \
    curl --no-verify-ssl https://bootstrap.pypa.io/get-pip.py && \
    python get-pip.py && \
    pip install --upgrade --user awscli && \
    pip install boto3 chardet patool

运行命令后:

docker build -t repository.test .

我收到此错误:

Sending build context to Docker daemon 26.11 kB
Step 1/10 : FROM elyase/conda:2.7
 ---> 4abdba6a4c51
Step 2/10 : MAINTAINER me
 ---> Using cache
 ---> 54b7c51ab2b9
Step 3/10 : VOLUME /tmp
 ---> Using cache
 ---> 491cf0da6c97
Step 4/10 : VOLUME /efs-script-import-tmp
 ---> Using cache
 ---> 1b3167c560e7
Step 5/10 : RUN opkg-install --verbosity=4 curl python-dateutil python-botocore &&     curl --no-verify-ssl https://bootstrap.pypa.io/get-pip.py &&     python get-pip.py &&     pip install --upgrade --user awscli &&     pip install boto3 chardet patool
 ---> Running in 009d37b86f48
wget: server returned error: HTTP/1.1 404 Not Found
wget: server returned error: HTTP/1.1 404 Not Found
Downloading http://downloads.openwrt.org/snapshots/trunk/x86_64/generic/packages/base/Packages.gz.
Downloading http://downloads.openwrt.org/snapshots/trunk/x86_64/generic/packages/packages/Packages.gz.
Collected errors:
 * opkg_download: Failed to download http://downloads.openwrt.org/snapshots/trunk/x86_64/generic/packages/base/Packages.gz, wget returned 1.
 * opkg_download: Failed to download http://downloads.openwrt.org/snapshots/trunk/x86_64/generic/packages/packages/Packages.gz, wget returned 1.
opkg_conf_parse_file: Loading conf file /etc/opkg.conf.
pkg_hash_load_feeds: 
pkg_hash_load_status_files: 
pkg_vec_insert_merge: Adding new pkg=terminfo version=5.9 arch=x86_64.
pkg_vec_insert_merge: Adding new pkg=libc version=0.9.33.2 arch=x86_64.
pkg_vec_insert_merge: Adding new pkg=bash version=4.3.30 arch=x86_64.
pkg_vec_insert_merge: Adding new pkg=bzip2 version=1.0.6 arch=x86_64.
pkg_vec_insert_merge: Adding new pkg=libgcc version=4.8-linaro arch=x86_64.
pkg_vec_insert_merge: Adding new pkg=libncurses version=5.9 arch=x86_64.
pkg_vec_insert_merge: Adding new pkg=zlib version=1.2.8 arch=x86_64.
pkg_vec_insert_merge: Adding new pkg=libbz2 version=1.0.6 arch=x86_64.
opkg_install_cmd: curl
opkg_install_cmd: python-dateutil
opkg_install_cmd: python-botocore
pkg_info_preinstall_check: Updating file owner list.
**Unknown package 'curl'.
Unknown package 'python-dateutil'.**
**Unknown package 'python-botocore'.**
opkg_configure_packages: Configuring unpacked packages.
opkg_configure_packages: Reordering packages before configuring them...
opkg_recurse_pkgs_in_order: pkg terminfo.
opkg_recurse_pkgs_in_order: Descending on pkg libc.
opkg_recurse_pkgs_in_order: pkg libc.
opkg_recurse_pkgs_in_order: Descending on pkg libgcc.
opkg_recurse_pkgs_in_order: pkg libgcc.
opkg_recurse_pkgs_in_order: pkg libc already visited, skipping.
opkg_recurse_pkgs_in_order: pkg bash.
opkg_recurse_pkgs_in_order: Descending on pkg libc.
opkg_recurse_pkgs_in_order: pkg libc already visited, skipping.
opkg_recurse_pkgs_in_order: Descending on pkg libncurses.
opkg_recurse_pkgs_in_order: pkg libncurses.
opkg_recurse_pkgs_in_order: Descending on pkg libc.
opkg_recurse_pkgs_in_order: pkg libc already visited, skipping.
opkg_recurse_pkgs_in_order: Descending on pkg terminfo.
opkg_recurse_pkgs_in_order: pkg terminfo already visited, skipping.
opkg_recurse_pkgs_in_order: pkg bzip2.
opkg_recurse_pkgs_in_order: Descending on pkg libc.
opkg_recurse_pkgs_in_order: pkg libc already visited, skipping.
opkg_recurse_pkgs_in_order: Descending on pkg libbz2.
opkg_recurse_pkgs_in_order: pkg libbz2.
opkg_recurse_pkgs_in_order: Descending on pkg libc.
opkg_recurse_pkgs_in_order: pkg libc already visited, skipping.
opkg_recurse_pkgs_in_order: pkg libgcc already visited, skipping.
opkg_recurse_pkgs_in_order: pkg libncurses already visited, skipping.
opkg_recurse_pkgs_in_order: pkg zlib.
opkg_recurse_pkgs_in_order: Descending on pkg libc.
opkg_recurse_pkgs_in_order: pkg libc already visited, skipping.
opkg_recurse_pkgs_in_order: pkg libbz2 already visited, skipping.
write_status_files_if_changed: Nothing to be done.
hash_table: pkg-hash, 24576 bytes
    n_buckets=1024, n_elements=8, n_collisions=0
    max_bucket_len=0, n_used_buckets=8, ave_bucket_len=1.00
    n_hits=10, n_misses=14
hash_table: file-hash, 24576 bytes
    n_buckets=1024, n_elements=60, n_collisions=2
    max_bucket_len=1, n_used_buckets=58, ave_bucket_len=1.03
    n_hits=0, n_misses=60
hash_table: obs-file-hash, 1536 bytes
    n_buckets=64, n_elements=0, n_collisions=0
    max_bucket_len=0, n_used_buckets=0, ave_bucket_len=0.00
    n_hits=0, n_misses=0
Collected errors:
 * opkg_install_cmd: Cannot install package curl.
 * opkg_install_cmd: Cannot install package python-dateutil.**
 * opkg_install_cmd: Cannot install package python-botocore.
/bin/sh: curl: not found**
The command '/bin/sh -c opkg-install --verbosity=4 curl python-dateutil python-botocore &&     curl --no-verify-ssl https://bootstrap.pypa.io/get-pip.py &&     python get-pip.py &&     pip install --upgrade --user awscli &&     pip install boto3 chardet patool' returned a non-zero code: 127

我无法弄清楚如何安装我的应用程序所需的软件包

2 个答案:

答案 0 :(得分:1)

您现在使用引用elyase/conda:2.7的旧图片http://downloads.openwrt.org/snapshots/trunk/x86_64/generic/packages,但现在看起来像http://downloads.openwrt.org/snapshots/trunk/x86/64/packages

您需要在/etc/opkg.conf

中修复此网址

这是一个相对较小的图像(105M)的Dockerfile,几乎可以完成这项工作:

FROM alpine

# Runtime packages
RUN apk add --no-cache py-numpy sqlite-libs \
# Build packages
 && apk add --no-cache --virtual .build-deps \
          py-pip \
          musl-dev g++ python-dev py-numpy-dev \
          ca-certificates \
# Runtime pip packages
 && pip install boto3 chardet patool \
# Pandas
 && pip install pandas \
# Cleaning
 && apk del .build-deps \
 && rm -rf /root/.cache/ /var/cache/misc/*

你可以调整它来安装你需要的任何其他库,或者用pip安装numpy,这样你就不会有python,你可以像以前一样使用pyrun

答案 1 :(得分:0)

Unknown package 'awscli'.
Unknown package 'python-botocore'.

=>非常明确:'awscli'和'python-botocore'不是openwrt软件包,你应该用pip安装它我猜

Download error on https://pypi.python.org/simple/: [SSL: CERTIFICATE_VERIFY_FAILED] unknown error (_ssl.c:661) -- Some packages may not be found!

=> Alpine 3.3, Python 2.7.11, urllib2 causing SSL: CERTIFICATE_VERIFY_FAILED:您需要安装opkg软件包ca-certificates

但是,它会失败,因为它会尝试构建C代码,所以你必须安装python头和co。