不能构buildPython泊坞窗图像

我正在尝试使用下面的dockerfile来构build一个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 

我不知道如何安装那些我的应用程序所需的软件包

您现在正在使用旧映像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修复这个URL

这是一个相对较小的图像(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

 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,导致SSL的urllib2:CERTIFICATE_VERIFY_FAILED :您需要安装opkg包ca-certificates

但是,它会失败,因为它会尝试构buildC代码,所以你必须安装Python头和CO。