69 lines
2.0 KiB
Docker
69 lines
2.0 KiB
Docker
FROM debian:9
|
|
|
|
# The Dockerfile for this project is split into 5 layers.
|
|
# - Base: The base image
|
|
# - System: System package installation
|
|
# - Compile: Custom compilation and installation
|
|
# - Packages: Application packages (e.g. npm, pip etc)
|
|
# - App: Task runs and application prep
|
|
# The order of the layers is based on which parts are likely to be
|
|
# modified the most.
|
|
# The project source is added in the App layer so as not to invalidate
|
|
# the Dockerfile cache.
|
|
|
|
# SYSTEM
|
|
SHELL ["/bin/bash","-ex","-c"]
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
RUN apt-get update && apt-get install -y\
|
|
build-essential\
|
|
closure-compiler\
|
|
cron\
|
|
locales\
|
|
libgdal-dev\
|
|
libpq-dev\
|
|
python\
|
|
python3-dev\
|
|
python3-pip\
|
|
python3\
|
|
rsync\
|
|
virtualenv\
|
|
wget\
|
|
&& echo "en_GB.UTF-8 UTF-8" > /etc/locale.gen\
|
|
&& locale-gen en_GB.UTF-8\
|
|
&& dpkg-reconfigure locales\
|
|
&& /usr/sbin/update-locale LANG=en_GB.UTF-8
|
|
ENV LC_ALL en_GB.UTF-8
|
|
|
|
# COMPILE
|
|
WORKDIR /build
|
|
RUN wget https://nodejs.org/dist/v7.10.0/node-v7.10.0-linux-x64.tar.gz\
|
|
&& tar -xvf node-v7.10.0-linux-x64.tar.gz\
|
|
&& pushd node-v7.10.0-linux-x64\
|
|
&& rsync --archive ./* /usr/local\
|
|
&& popd\
|
|
&& wget http://download.osgeo.org/proj/proj-4.9.1.tar.gz\
|
|
&& wget http://download.osgeo.org/proj/proj-datumgrid-1.5.tar.gz\
|
|
&& tar -xvf proj-4.9.1.tar.gz && cd proj-4.9.1/nad\
|
|
&& tar -xvf ../../proj-datumgrid-1.5.tar.gz && cd ../ \
|
|
&& ./configure && make && make install
|
|
|
|
RUN apt-get update && apt-get install -y gettext git
|
|
|
|
# PACKAGES
|
|
WORKDIR /app
|
|
COPY ./requirements/base.txt requirements-base.txt
|
|
RUN python3 -m pip install -r requirements-base.txt
|
|
RUN python3 -m pip install -e git+git://github.com/nitmir/django-cas-server.git@248658b52d3f87d7275a05d5e2c9773a0c2bc5a2#egg=django-cas-server
|
|
|
|
# APP
|
|
WORKDIR /app
|
|
COPY . .
|
|
COPY ./support/cron/* /etc/cron.d/
|
|
RUN chmod 0644 /etc/cron.d/*\
|
|
&& touch /var/log/cron.log
|
|
|
|
EXPOSE 8000
|
|
|
|
CMD [ "python3", "manage.py", "migrate", "&&", \
|
|
"python3", "manage.py", "runserver", "0.0.0.0:8000" ]
|