diff options
author | yan <yzhu@yahoo-inc.com> | 2015-08-03 22:36:35 +0300 |
---|---|---|
committer | yan <yzhu@yahoo-inc.com> | 2015-08-04 02:26:22 +0300 |
commit | b38500fad848c17f6ee9fe5cd59ae994e7f6d742 (patch) | |
tree | b16bc6ba30a44bc1b8ece8f061b3c5b9afc86d17 /Dockerfile-dev | |
parent | 9139531af0299743d068b8ba866db5a2a75f93e5 (diff) |
Add development Dockerfile and instructions
Diffstat (limited to 'Dockerfile-dev')
-rw-r--r-- | Dockerfile-dev | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/Dockerfile-dev b/Dockerfile-dev new file mode 100644 index 000000000..835b3a7cc --- /dev/null +++ b/Dockerfile-dev @@ -0,0 +1,65 @@ +# This Dockerfile builds an image for development. +FROM ubuntu:trusty +MAINTAINER Jakub Warmuz <jakub@warmuz.org> +MAINTAINER William Budington <bill@eff.org> +MAINTAINER Yan <yan@eff.org> + +# Note: this only exposes the port to other docker containers. You +# still have to bind to 443@host at runtime, as per the ACME spec. +EXPOSE 443 + +# TODO: make sure --config-dir and --work-dir cannot be changed +# through the CLI (letsencrypt-docker wrapper that uses standalone +# authenticator and text mode only?) +VOLUME /etc/letsencrypt /var/lib/letsencrypt + +WORKDIR /opt/letsencrypt + +# no need to mkdir anything: +# https://docs.docker.com/reference/builder/#copy +# If <dest> doesn't exist, it is created along with all missing +# directories in its path. + +# TODO: Install non-default Python versions for tox. +# TODO: Install Apache/Nginx for plugin development. +COPY bootstrap/ubuntu.sh /opt/letsencrypt/src/ +RUN /opt/letsencrypt/src/ubuntu.sh && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* + +# the above is not likely to change, so by putting it further up the +# Dockerfile we make sure we cache as much as possible + +COPY setup.py README.rst CHANGES.rst MANIFEST.in requirements.txt EULA linter_plugin.py tox.cover.sh tox.ini /opt/letsencrypt/src/ + +# all above files are necessary for setup.py, however, package source +# code directory has to be copied separately to a subdirectory... +# https://docs.docker.com/reference/builder/#copy: "If <src> is a +# directory, the entire contents of the directory are copied, +# including filesystem metadata. Note: The directory itself is not +# copied, just its contents." Order again matters, three files are far +# more likely to be cached than the whole project directory + +COPY letsencrypt /opt/letsencrypt/src/letsencrypt/ +COPY acme /opt/letsencrypt/src/acme/ +COPY letsencrypt-apache /opt/letsencrypt/src/letsencrypt-apache/ +COPY letsencrypt-nginx /opt/letsencrypt/src/letsencrypt-nginx/ +COPY tests /opt/letsencrypt/src/tests/ + +RUN virtualenv --no-site-packages -p python2 /opt/letsencrypt/venv && \ + /opt/letsencrypt/venv/bin/pip install \ + -r /opt/letsencrypt/src/requirements.txt \ + -e /opt/letsencrypt/src/acme \ + -e /opt/letsencrypt/src \ + -e /opt/letsencrypt/src/letsencrypt-apache \ + -e /opt/letsencrypt/src/letsencrypt-nginx \ + -e /opt/letsencrypt/src[dev,docs,testing] + +# install in editable mode (-e) to save space: it's not possible to +# "rm -rf /opt/letsencrypt/src" (it's stays in the underlaying image); +# this might also help in debugging: you can "docker run --entrypoint +# bash" and investigate, apply patches, etc. + +ENV PATH /opt/letsencrypt/venv/bin:$PATH |