/
Dockerfile
108 lines (96 loc) · 4.67 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
FROM python:3.6-buster
ARG app_git_url=https://github.com/bihealth/varfish-server.git
ARG app_git_tag
ARG app_git_depth=1
ENV DEBIAN_FRONTEND noninteractive
ENV CUSTOM_STATIC_DIR /usr/src/app/local-static
## Add the wait script to the image
ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.7.3/wait /usr/local/bin/wait
RUN chmod +x /usr/local/bin/wait
# Copy source code into Docker image.
RUN mkdir -p /usr/src
RUN git clone --depth $app_git_depth --branch $app_git_tag $app_git_url /usr/src/app
# Install system dependencies.
RUN apt-get update && \
apt-get install -y \
apt-utils \
gcc \
ldap-utils \
libldap2-dev \
libsasl2-dev \
make \
postgresql-client \
wget
# Install Python dependencies.
RUN cd /usr/src/app && \
pip install --no-cache-dir -r requirements/production.txt && \
pip install --no-cache-dir -r requirements/local.txt
# Install miniconda3 and setup environment for annotation, required for Kiosk.
RUN ["/bin/bash","-c", "cd /tmp && \
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3 && \
source /opt/miniconda3/bin/activate && \
conda install -c conda-forge -y mamba && \
mamba create -c bioconda -y -n varfish-annotator \
varfish-annotator-cli=0.10=0 \
htslib=1.9 \
bcftools=1.9 && \
rm -f Miniconda3-latest-Linux-x86_64.sh"]
# Install modern nodejs
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - && \
apt install nodejs
# Install npm dependencies.
RUN cd /usr/src/app/varfish/vueapp && \
npm ci && \
npm run build
# Download files from CDN.
RUN mkdir -p /usr/src/app/local-static/local/css && \
mkdir -p /usr/src/app/local-static/local/fonts && \
mkdir -p /usr/src/app/local-static/local/js && \
cd /usr/src/app/local-static/local/fonts && \
wget \
https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/fonts/FontAwesome.otf \
https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/fonts/fontawesome-webfont.eot \
https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/fonts/fontawesome-webfont.svg \
https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf \
https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/fonts/fontawesome-webfont.woff \
https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2 && \
\
cd /usr/src/app/local-static/local/css && \
wget \
https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css \
https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css \
https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/css/bootstrap-select.min.css \
https://cdn.datatables.net/1.10.24/css/dataTables.jqueryui.min.css \
https://cdn.jsdelivr.net/npm/bootstrap4-tagsinput@4.1.3/tagsinput.css && \
\
cd /usr/src/app/local-static/local/js && \
wget \
https://code.jquery.com/jquery-3.5.1.min.js \
https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js \
https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.4/js/tether.min.js \
https://cdnjs.cloudflare.com/ajax/libs/shepherd/1.8.1/js/shepherd.min.js \
https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js \
https://browser.sentry-cdn.com/6.2.5/bundle.tracing.min.js \
https://cdn.datatables.net/1.10.24/js/jquery.dataTables.min.js \
https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/js/bootstrap-select.min.js \
https://cdn.jsdelivr.net/npm/bootstrap4-tagsinput@4.1.3/tagsinput.js \
https://cdnjs.cloudflare.com/ajax/libs/jsrender/1.0.11/jsrender.min.js \
https://cdn.plot.ly/plotly-1.54.5.min.js \
https://cdnjs.cloudflare.com/ajax/libs/axios/0.21.1/axios.min.js \
https://cdnjs.cloudflare.com/ajax/libs/google-palette/1.1.0/palette.min.js \
https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js
# Prepare static files
RUN cd /usr/src/app && \
mkdir -p /usr/src/app/varfish/vueapp/dist && \
DJANGO_SECRET_KEY=for-build-only \
DJANGO_SETTINGS_MODULE=config.settings.production \
DATABASE_URL=postgres://varfish:varfish@fake/varfish \
python manage.py collectstatic --no-input
# Define the entry point.
COPY docker-entrypoint.sh /usr/local/bin
RUN chmod +x /usr/local/bin/docker-entrypoint.sh && \
ln -s /usr/local/bin/docker-entrypoint.sh / # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["wsgi"]
EXPOSE 8080/tcp