From aef31db7c6f7784e6a5e97a50801fe943fabc462 Mon Sep 17 00:00:00 2001
From: Enis Afgan <afgane@gmail.com>
Date: Wed, 7 Nov 2018 10:47:02 -0500
Subject: [PATCH] Add support for CVMFS client to the Docker image

---
 Dockerfile                              | 36 ++++++++++++++-----------
 docker/cvmfs/data.galaxyproject.org.pub |  9 +++++++
 docker/cvmfs/default.local              |  5 ++++
 docker/cvmfs/galaxyproject.org.conf     |  1 +
 4 files changed, 36 insertions(+), 15 deletions(-)
 create mode 100644 docker/cvmfs/data.galaxyproject.org.pub
 create mode 100644 docker/cvmfs/default.local
 create mode 100644 docker/cvmfs/galaxyproject.org.conf

diff --git a/Dockerfile b/Dockerfile
index 9c9b3c8d..79e8fcb8 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -7,14 +7,19 @@ ENV PULSAR_CONFIG_CONDA_PREFIX /usr/local
 ADD ./requirements.txt /pulsar/
 
 RUN apt-get update \
-    # build dependencies
-    && apt-get install -y --no-install-recommends gcc python-setuptools python-dev python-pip \
-    \
-    # Install pulsar python requirements
+    # Install CVMFS client
+    && apt-get install -y --no-install-recommends lsb-release wget \
+    && wget https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-release-latest_all.deb \
+    && dpkg -i cvmfs-release-latest_all.deb \
+    && rm -f cvmfs-release-latest_all.deb \
+    # Install packages
+    && apt-get update \
+    && apt-get install -y --no-install-recommends gcc python-setuptools \
+        python-dev python-pip cvmfs cvmfs-config-default \
+    # Install Pulsar Python requirements
     && pip install --no-cache-dir -r /pulsar/requirements.txt \
-    \
     # Remove build deps and cleanup
-    && apt-get -y remove curl bzip2 python-dev gcc \
+    && apt-get -y remove python-dev gcc wget lsb-release \
     && apt-get -y autoremove \
     && apt-get autoclean \
     && rm -rf /var/lib/apt/lists/* /var/log/dpkg.log
@@ -26,19 +31,20 @@ RUN adduser --disabled-password --gecos '' pulsar \
 # Set working directory to /pulsar/
 WORKDIR /pulsar/
 
-# Add files to /pulsar/
+# Add files to the image
 ADD . /pulsar
-
-# Change ownership to pulsar
+# Change ownership to pulsar & configure CVMFS
 RUN python setup.py install \
     && pulsar-config --auto_conda --host 0.0.0.0 \
     && chown -R pulsar:pulsar /pulsar \
-    && chmod +x /usr/local/bin/pulsar
-
-# Switch to new, lower-privilege user
-USER pulsar
+    && chmod +x /usr/local/bin/pulsar \
+    && cp /pulsar/docker/cvmfs/default.local /etc/cvmfs/ \
+    && cp /pulsar/docker/cvmfs/galaxyproject.org.conf /etc/cvmfs/domain.d/ \
+    && cp /pulsar/docker/cvmfs/data.galaxyproject.org.pub /etc/cvmfs/keys/
 
-# pulsar will listen on this port
+# Pulsar will listen on this port
 EXPOSE 8913
 
-CMD /usr/local/bin/pulsar
+# Must run CVMFS setup otherwise autofs does not get configured nor automount
+# starts. Then switch to less-priviledged user for running Pulsar.
+CMD /usr/bin/cvmfs_config setup; su pulsar -c "/usr/local/bin/pulsar"
diff --git a/docker/cvmfs/data.galaxyproject.org.pub b/docker/cvmfs/data.galaxyproject.org.pub
new file mode 100644
index 00000000..0fb04da6
--- /dev/null
+++ b/docker/cvmfs/data.galaxyproject.org.pub
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5LHQuKWzcX5iBbCGsXGt
+6CRi9+a9cKZG4UlX/lJukEJ+3dSxVDWJs88PSdLk+E25494oU56hB8YeVq+W8AQE
+3LWx2K2ruRjEAI2o8sRgs/IbafjZ7cBuERzqj3Tn5qUIBFoKUMWMSIiWTQe2Sfnj
+GzfDoswr5TTk7aH/FIXUjLnLGGCOzPtUC244IhHARzu86bWYxQJUw0/kZl5wVGcH
+maSgr39h1xPst0Vx1keJ95AH0wqxPbCcyBGtF1L6HQlLidmoIDqcCQpLsGJJEoOs
+NVNhhcb66OJHah5ppI1N3cZehdaKyr1XcF9eedwLFTvuiwTn6qMmttT/tHX7rcxT
+owIDAQAB
+-----END PUBLIC KEY-----
diff --git a/docker/cvmfs/default.local b/docker/cvmfs/default.local
new file mode 100644
index 00000000..799bb97d
--- /dev/null
+++ b/docker/cvmfs/default.local
@@ -0,0 +1,5 @@
+CVMFS_REPOSITORIES="data.galaxyproject.org"
+CVMFS_HTTP_PROXY="DIRECT"
+CVMFS_QUOTA_LIMIT="10000"
+CVMFS_CACHE_BASE="/tmp/cvmfs/cache"
+CVMFS_USE_GEOAPI=yes
diff --git a/docker/cvmfs/galaxyproject.org.conf b/docker/cvmfs/galaxyproject.org.conf
new file mode 100644
index 00000000..5512248d
--- /dev/null
+++ b/docker/cvmfs/galaxyproject.org.conf
@@ -0,0 +1 @@
+CVMFS_SERVER_URL="http://cvmfs1-psu0.galaxyproject.org/cvmfs/@fqrn@;http://cvmfs1-iu0.galaxyproject.org/cvmfs/@fqrn@;http://cvmfs1-tacc0.galaxyproject.org/cvmfs/@fqrn@;http://cvmfs1-mel0.gvl.org.au/cvmfs/@fqrn@"
-- 
GitLab