-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Dockerfile-backend
156 lines (132 loc) · 4.32 KB
/
Dockerfile-backend
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
FROM ubuntu:14.04
MAINTAINER Open State Foundation <[email protected]>
# Use bash as default shell
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# Add multiverse to sources
RUN echo 'deb http://archive.ubuntu.com/ubuntu/ trusty multiverse' >> etc/apt/sources.list
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
#Set Timezone
RUN echo "Europe/Amsterdam" > /etc/timezone \
&& dpkg-reconfigure -f noninteractive tzdata
RUN apt-get update \
&& apt-get install -y \
python-dev \
python-setuptools \
python-software-properties \
openjdk-7-jre-headless \
wget \
curl \
poppler-utils \
software-properties-common \
autoconf \
automake \
libtool \
gettext \
git \
dnsutils \
inotify-tools \
vim
RUN add-apt-repository ppa:mc3man/trusty-media \
&& apt-get update \
&& apt-get dist-upgrade -y
RUN apt-get update \
&& apt-get install -y \
make \
libxml2-dev \
libxslt1-dev \
libssl-dev \
libffi-dev \
libtiff4-dev \
libjpeg8-dev \
liblcms2-dev \
python-virtualenv \
supervisor
RUN pip install --upgrade pip
##### Install dependencies for pyav #####
RUN apt-get update \
&& apt-get install -y \
libfaac-dev \
libgpac-dev \
checkinstall \
libmp3lame-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
librtmp-dev \
libtheora-dev \
libvorbis-dev \
libx264-dev \
libfdk-aac-dev \
libvpx-dev \
libxvidcore-dev \
pkg-config \
yasm \
zlib1g-dev \
libavformat-dev \
libavcodec-dev \
libavdevice-dev \
libavutil-dev \
libswscale-dev \
libavresample-dev \
libfontconfig1-dev \
libjpeg-dev \
libopenjpeg-dev \
libmagic-dev
# Temporarily use /tmp as workdir for the pyav dependencies
# WORKDIR /tmp
RUN apt-get install -y ffmpeg
##########
WORKDIR /opt/pfl
# Create a virtualenv project
RUN echo 'ok'
RUN virtualenv -q /opt
RUN echo "source /opt/bin/activate; cd /opt/pfl;" >> /etc/profile
# Temporarily add all pfl API files on the host to the container
# as it contains files needed to finish the base installation
ADD . /opt/pfl
# Install Python requirements
COPY ocd_backend/requirements.txt /opt/pfl/requirements.txt
RUN source /opt/bin/activate \
&& pip install --upgrade pip \
&& pip install --upgrade setuptools \
&& pip install pycparser==2.13 \
&& pip install Cython==0.21.2 \
&& pip install -r requirements.txt
# Install poppler for pdfparser
RUN git clone --depth 1 git://people.freedesktop.org/~cloos/poppler /tmp/poppler
RUN git clone https://github.com/izderadicka/pdfparser.git /tmp/pdfparser
RUN cd /tmp/pdfparser && git checkout 92f756b765f8dd5916f29a084f467b61f34f7c25
WORKDIR /tmp/poppler/
RUN ./autogen.sh \
&& ./configure --disable-poppler-qt4 --disable-poppler-qt5 --disable-poppler-cpp --disable-gtk-test --disable-splash-output --disable-utils \
&& make \
&& make install
# Install pdfparser
WORKDIR /tmp/pdfparser/
RUN ldconfig /tmp/pdfparser \
&& source /opt/bin/activate \
&& POPPLER_ROOT=/tmp/poppler python setup.py install
RUN apt-get install supervisor
# Install Docsplit dependencies
RUN apt-get update && apt-get install -y ruby ruby-dev tesseract-ocr tesseract-ocr-eng tesseract-ocr-nld graphicsmagick ImageMagick poppler-utils poppler-data ghostscript pdftk
RUN gem install docsplit
# Delete all pfl API files again
RUN find . -delete
RUN rm -rf /tmp/pdfparser /tmp/poppler
# When the container is created or started run start.sh which starts
# all required services and supervisor which starts celery and celerycam
# Setup Celery
RUN adduser --disabled-password --gecos '' celery \
&& mkdir -p /var/run/celery \
&& chown celery:celery /var/run/celery \
&& mkdir -p /opt/pfl/ocd_backend/temp \
&& chown celery:celery /opt/pfl/ocd_backend/temp \
&& touch /opt/pfl/backend.log \
&& chown celery:celery /opt/pfl/backend.log \
&& touch /opt/pfl/log/celery.log \
&& chown celery:celery /opt/pfl/log/celery.log
USER celery
WORKDIR /opt/pfl/
CMD source /opt/bin/activate && /opt/bin/celery --app=ocd_backend:celery_app worker --loglevel=info --concurrency=1