0

I am trying to build a docker image of python using the following dockerfile: I'm looking to have the smallest image so I use elyase/conda:2.7 image as a base:

 # 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

After running the command:

docker build -t repository.test .

I get this error:

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

I can't figure out how to install there packages that are necessary for my application

7
  • Please add verbosity option to opkg-install (--verbosity=4) and pip (--verbose) to have more information why it failed. Commented Jun 26, 2017 at 14:07
  • As you are overwriting /bin/python with your pyrun2.7, maybe opkg-install and pip packages can't run on it? Commented Jun 26, 2017 at 14:10
  • I want to make a small image so I'm using Pyrun. Commented Jun 26, 2017 at 14:11
  • it says: it is not compatible with this Python (from https://pypi.python.org/simple/pandas/); it is not compatible with this Python please check question update Commented Jun 26, 2017 at 14:13
  • Python is already in your base image, so changing it to another won't allow you to gain any space. Commented Jun 26, 2017 at 14:17

2 Answers 2

1

You are now using an old image elyase/conda:2.7 which references http://downloads.openwrt.org/snapshots/trunk/x86_64/generic/packages, but looks like it's now http://downloads.openwrt.org/snapshots/trunk/x86/64/packages.

You need to fix this URL in /etc/opkg.conf

Here is a Dockerfile for a relatively small image (105M) that should almost do the job:

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/*

You can adapt it to install any other lib you need, or install numpy with pip, so you won't have python and you will be able just use pyrun like you did before.

Sign up to request clarification or add additional context in comments.

Comments

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

=> Pretty clear: 'awscli' and 'python-botocore' are not available openwrt packages, you should install them with pip I guess

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: you need to install the opkg package ca-certificates.

But, then it will fails because it will try to build C-code so you have to install python headers and co.

2 Comments

How to install python headers?
I got Unknown package 'ca-certificates'

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.