Description
Proposed change
Builds which follow the repo2docker
configuration standard can be difficult to configure behind certain firewalled environments where a proxy must be configured to gain "outside" Internet access.
For example, (ref. pangeo-docker-images issue-517) the pangeo/base-image/Dockerfile
contains a number of ONBUILD instructions (following repo2docker configuration standard) which are intended to help the developer with installs of additional packages etc, but none of these steps works; We see errors from the ONBUILD steps like:
RuntimeError: Download error (60) SSL peer certificate or SSH remote key was not OK [https://conda.anaconda.org/conda-forge/noarch/repodata.json]
SSL certificate problem: self-signed certificate in certificate chain
A preBuild
step similar to the existing [postBuild](https://repo2docker.readthedocs.io/en/latest/config_files.html#postbuild-run-code-after-installing-the-environment)
would be provide a useful point where we could configure the additional certs, proxy environment config, and anything else required before apt-get package installation can succeed.
Possible code for the preBuild
hook (untested):
(Insert at line 117 of https://github.com/pangeo-data/pangeo-docker-images/blob/master/base-image/Dockerfile between existing ONBUILD Checking for binder
and Checking for apt.txt
)
# If a preBuild file exists, run it
ONBUILD RUN echo "Checking for 'preBuild'..." \
; [ -d binder ] && cd binder \
; [ -d .binder ] && cd .binder \
; if test -f "preBuild" ; then \
chmod +x preBuild \
&& ./preBuild \
; fi
Alternative options
As a workaround we have to forego the convenience of the provided ONBUILD steps and repeat the same logic in our own Dockerfile which builds FROM pangeo/base-image. This seems repetitive and should not be necessary.
We've considered forking pangeo/base-image into our own repo to make these changes possible but that's a highly undesirable option.
Who would use this feature?
Anyone who wishes to make a build following repo2docker configuration standards but is stuck behind a proxy firewall.
How much effort will adding it take?
Patch is above - I would estimate less than half a day for documentation updates and code integration.
Who can do this work?
Basic shell skills, ability to read and write documentation.