|
1 | 1 | # Dockerfile for the PDC's HubDB service |
2 | 2 | # |
3 | 3 | # |
4 | | -# HubDB for PDC-collected aggregate data. |
| 4 | +# HubDB for PDC-collected aggregate data. Based on Mongo official 3.0. |
5 | 5 | # |
6 | 6 | # Example: |
7 | 7 | # sudo docker pull pdcbc/hubdb |
|
14 | 14 | # - Mongo live db: -v </path/>:/data/db/:rw |
15 | 15 | # - Mongo dumps: -v </path/>:/data/dump/:rw |
16 | 16 | # |
17 | | -FROM mongo:3.0 |
| 17 | +# Releases |
| 18 | +# - https://github.com/PDCbc/gateway/releases |
| 19 | +# |
| 20 | +# |
| 21 | +FROM phusion/baseimage |
18 | 22 | MAINTAINER derek.roberts@gmail.com |
19 | | -ENV RELEASE 0.1.5 |
| 23 | +ENV RELEASE 0.1.6 |
| 24 | + |
| 25 | + |
| 26 | +################################################################################ |
| 27 | +# Start - modified from https://hub.docker.com/_/mongo/ |
| 28 | +################################################################################ |
| 29 | + |
| 30 | + |
| 31 | +# Create users and groups |
| 32 | +# |
| 33 | +RUN groupadd -r mongodb; \ |
| 34 | + useradd -r -g mongodb mongodb |
| 35 | + |
| 36 | + |
| 37 | +# Packages |
| 38 | +# |
| 39 | +RUN apt-get update; \ |
| 40 | + apt-get install -y --no-install-recommends \ |
| 41 | + ca-certificates; \ |
| 42 | + rm -rf /var/lib/apt/lists/* |
| 43 | + |
| 44 | + |
| 45 | +# MongoDB |
| 46 | +# |
| 47 | +ENV MONGO_MAJOR 3.0 |
| 48 | +ENV MONGO_VERSION 3.0.7 |
| 49 | +# |
| 50 | +RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 492EAFE8CD016A07919F1D2B9ECBEC467F0CEB10; \ |
| 51 | + echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/$MONGO_MAJOR multiverse" > /etc/apt/sources.list.d/mongodb-org.list |
| 52 | +RUN apt-get update; \ |
| 53 | + apt-get install -y \ |
| 54 | + mongodb-org=$MONGO_VERSION \ |
| 55 | + mongodb-org-server=$MONGO_VERSION \ |
| 56 | + mongodb-org-shell=$MONGO_VERSION \ |
| 57 | + mongodb-org-mongos=$MONGO_VERSION \ |
| 58 | + mongodb-org-tools=$MONGO_VERSION; \ |
| 59 | + rm -rf /var/lib/apt/lists/* \ |
| 60 | + /var/lib/mongodb \ |
| 61 | + /etc/mongod.conf |
| 62 | + |
| 63 | + |
| 64 | +# Volume |
| 65 | +# |
| 66 | +RUN mkdir -p /data/db; \ |
| 67 | + chown -R mongodb:mongodb /data/db |
| 68 | +VOLUME /data/db |
| 69 | + |
| 70 | + |
| 71 | +# Port |
| 72 | +# |
| 73 | +EXPOSE 27017 |
| 74 | + |
| 75 | + |
| 76 | +################################################################################ |
| 77 | +# End - modified from https://hub.docker.com/_/mongo/ |
| 78 | +################################################################################ |
20 | 79 |
|
21 | 80 |
|
22 | 81 | # Packages |
23 | 82 | # |
24 | 83 | RUN apt-get update; \ |
25 | 84 | apt-get install -y \ |
26 | | - git; \ |
27 | | - apt-get clean; \ |
28 | | - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* |
| 85 | + git; \ |
| 86 | + apt-get clean; \ |
| 87 | + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* |
29 | 88 |
|
30 | 89 |
|
31 | 90 | # Prepare /app/ folder |
32 | 91 | # |
33 | 92 | WORKDIR /app/ |
34 | 93 | RUN git clone https://github.com/pdcbc/hubdb.git . -b ${RELEASE} |
| 94 | + |
| 95 | + |
| 96 | +# Mongo startup |
| 97 | +# |
| 98 | +RUN mkdir -p /etc/service/mongod/; \ |
| 99 | + SCRIPT=/etc/service/mongod/run; \ |
| 100 | + ( \ |
| 101 | + echo "#!/bin/bash"; \ |
| 102 | + echo ""; \ |
| 103 | + echo "set -e -o nounset"; \ |
| 104 | + echo ""; \ |
| 105 | + echo ""; \ |
| 106 | + echo "# Start mongod"; \ |
| 107 | + echo "#"; \ |
| 108 | + echo "#exec mongod --storageEngine wiredTiger"; \ |
| 109 | + echo "exec mongod"; \ |
| 110 | + ) \ |
| 111 | + >> ${SCRIPT}; \ |
| 112 | + chmod +x ${SCRIPT} |
| 113 | + |
| 114 | + |
| 115 | +# Maintenance script and cron job |
| 116 | +# |
| 117 | +RUN SCRIPT=/app/mongo_maint.sh; \ |
| 118 | + ( \ |
| 119 | + echo "# Run database dump/maintenance script (boot, daily 1:15 AM)"; \ |
| 120 | + echo "@reboot "${SCRIPT}; \ |
| 121 | + echo "15 1 * * * "${SCRIPT}; \ |
| 122 | + ) \ |
| 123 | + | crontab - |
0 commit comments