Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/certbot/certbot.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryan <yzhu@yahoo-inc.com>2015-08-03 22:36:35 +0300
committeryan <yzhu@yahoo-inc.com>2015-08-04 02:26:22 +0300
commitb38500fad848c17f6ee9fe5cd59ae994e7f6d742 (patch)
treeb16bc6ba30a44bc1b8ece8f061b3c5b9afc86d17 /Dockerfile-dev
parent9139531af0299743d068b8ba866db5a2a75f93e5 (diff)
Add development Dockerfile and instructions
Diffstat (limited to 'Dockerfile-dev')
-rw-r--r--Dockerfile-dev65
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