add docker setup
This commit is contained in:
parent
1a8b711c62
commit
b688076b23
3 changed files with 114 additions and 1 deletions
41
Dockerfile
Normal file
41
Dockerfile
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
FROM debian:jessie
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y locales git build-essential \
|
||||||
|
python3 python3-pip python3-dev \
|
||||||
|
libpq-dev libmysqlclient-dev libmemcached-dev libgeos-dev gettext \
|
||||||
|
librsvg2-bin --no-install-recommends
|
||||||
|
|
||||||
|
WORKDIR /
|
||||||
|
|
||||||
|
RUN dpkg-reconfigure locales && \
|
||||||
|
locale-gen C.UTF-8 && \
|
||||||
|
/usr/sbin/update-locale LANG=C.UTF-8
|
||||||
|
ENV LC_ALL C.UTF-8
|
||||||
|
|
||||||
|
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN useradd -ms /bin/bash -d /c3nav -u 15371 c3navuser
|
||||||
|
RUN echo 'c3navuser ALL=(ALL) NOPASSWD: /usr/bin/supervisord' >> /etc/sudoers
|
||||||
|
|
||||||
|
RUN mkdir /etc/c3nav
|
||||||
|
RUN mkdir /data
|
||||||
|
RUN mkdir /data/map
|
||||||
|
|
||||||
|
COPY src /c3nav/src
|
||||||
|
WORKDIR /c3nav/src
|
||||||
|
|
||||||
|
RUN pip3 install -U pip wheel setuptools
|
||||||
|
RUN pip3 install -r requirements.txt -r requirements/mysql.txt -r requirements/postgres.txt \
|
||||||
|
-r requirements/memcached.txt -r requirements/redis.txt gunicorn
|
||||||
|
|
||||||
|
RUN mkdir /static && chown -R c3navuser:c3navuser /static /c3nav /data
|
||||||
|
|
||||||
|
COPY deployment/docker/c3nav.bash /usr/local/bin/c3nav
|
||||||
|
RUN chmod +x /usr/local/bin/c3nav
|
||||||
|
|
||||||
|
USER c3navuser
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
ENTRYPOINT ["c3nav"]
|
||||||
|
CMD ["all"]
|
72
deployment/docker/c3nav.bash
Normal file
72
deployment/docker/c3nav.bash
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd /c3nav/src
|
||||||
|
export DATA_DIR=/data/
|
||||||
|
NUM_WORKERS=10
|
||||||
|
|
||||||
|
if [ ! -d /data/logs ]; then
|
||||||
|
mkdir /data/logs;
|
||||||
|
fi
|
||||||
|
if [ ! -d /data/media ]; then
|
||||||
|
mkdir /data/media;
|
||||||
|
fi
|
||||||
|
|
||||||
|
ls /data/map
|
||||||
|
|
||||||
|
python3 manage.py migrate --noinput
|
||||||
|
python3 manage.py loadmap -y
|
||||||
|
|
||||||
|
if [ "$1" == "webworker" ]; then
|
||||||
|
exec gunicorn c3nav.wsgi \
|
||||||
|
--name c3nav \
|
||||||
|
--workers $NUM_WORKERS \
|
||||||
|
--max-requests 1200 \
|
||||||
|
--max-requests-jitter 50 \
|
||||||
|
--log-level=info \
|
||||||
|
--bind=unix:/tmp/c3nav.sock
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "taskworker" ]; then
|
||||||
|
export C_FORCE_ROOT=True
|
||||||
|
exec celery -A c3nav worker -l info
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "checkmap" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "### checking map..."
|
||||||
|
exec python3 manage.py checkmap
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "editor" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "### starting editor..."
|
||||||
|
exec python3 manage.py runserver 0.0.0.0:8000
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "build" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "### rendering map..."
|
||||||
|
python3 manage.py rendermap
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "### building graph..."
|
||||||
|
exec python3 manage.py buildgraph
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "all" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "### rendering map..."
|
||||||
|
python3 manage.py rendermap
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "### building graph..."
|
||||||
|
python3 manage.py buildgraph
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "### running server..."
|
||||||
|
exec python3 manage.py runserver 0.0.0.0:8000
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Specify argument: webworker|taskworker|checkmap|editor|build|all"
|
||||||
|
exit 1
|
|
@ -10,7 +10,7 @@ from django.utils.crypto import get_random_string
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
config = configparser.RawConfigParser()
|
||||||
config.read(['/etc/c3nav/c3nav.cfg', os.path.expanduser('~/.c3nav.cfg'), 'c3nav.cfg'],
|
config.read(['/etc/c3nav/c3nav.cfg', os.path.expanduser('~/.c3nav.cfg'), os.environ.get('C3NAV_CONFIG', 'c3nav.cfg')],
|
||||||
encoding='utf-8')
|
encoding='utf-8')
|
||||||
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue