[docker] Download IHM from Pypy or reference git repo;

This creates two modes to run the Docker image:
- either in non-NIGHTLY mode, the latest version will be installed from
pypy.
- or in Nightly mode, it will clone the repository and update it every
time the instance is restarted.

It also updates Python to 3.7, for additional goodness.
This commit is contained in:
Benjamin Bouvier 2019-07-30 00:48:37 +02:00 committed by Alexis Metaireau
parent 89e78bb4d0
commit 9a889f61c7
2 changed files with 35 additions and 17 deletions

View file

@ -1,18 +1,7 @@
FROM python:3.6-alpine FROM python:3.7-alpine
RUN apk update && apk add gcc libc-dev libffi-dev openssl-dev &&\ ENV NIGHTLY="" \
mkdir /ihatemoney &&\ DEBUG="False" \
mkdir -p /etc/ihatemoney &&\
pip install --no-cache-dir gunicorn pymysql
COPY . /ihatemoney
ARG INSTALL_FROM_PYPI="False"
RUN if [ "$INSTALL_FROM_PYPI" = True ]; then\
pip install --no-cache-dir ihatemoney ; else\
pip install --no-cache-dir -e /ihatemoney ; \
fi
ENV DEBUG="False" \
SQLALCHEMY_DATABASE_URI="sqlite:////database/ihatemoney.db" \ SQLALCHEMY_DATABASE_URI="sqlite:////database/ihatemoney.db" \
SQLALCHEMY_TRACK_MODIFICATIONS="False" \ SQLALCHEMY_TRACK_MODIFICATIONS="False" \
SECRET_KEY="tralala" \ SECRET_KEY="tralala" \
@ -21,13 +10,19 @@ ENV DEBUG="False" \
MAIL_PORT=25 \ MAIL_PORT=25 \
MAIL_USE_TLS=False \ MAIL_USE_TLS=False \
MAIL_USE_SSL=False \ MAIL_USE_SSL=False \
MAIL_USERNAME=None \ MAIL_USERNAME= \
MAIL_PASSWORD=None \ MAIL_PASSWORD= \
ACTIVATE_DEMO_PROJECT="True" \ ACTIVATE_DEMO_PROJECT="True" \
ADMIN_PASSWORD="" \ ADMIN_PASSWORD="" \
ALLOW_PUBLIC_PROJECT_CREATION="True" \ ALLOW_PUBLIC_PROJECT_CREATION="True" \
ACTIVATE_ADMIN_DASHBOARD="False" ACTIVATE_ADMIN_DASHBOARD="False"
RUN apk update && apk add git gcc libc-dev libffi-dev openssl-dev wget &&\
mkdir -p /etc/ihatemoney &&\
pip install --no-cache-dir gunicorn pymysql;
COPY ./conf/entrypoint.sh /entrypoint.sh
VOLUME /database VOLUME /database
EXPOSE 8000 EXPOSE 8000
ENTRYPOINT ["/ihatemoney/conf/confandrun.sh"] ENTRYPOINT ["/entrypoint.sh"]

View file

@ -1,4 +1,8 @@
#!/bin/sh #!/bin/sh
# Fail the whole script on the first failure.
set -e
cat <<EOF > /etc/ihatemoney/ihatemoney.cfg cat <<EOF > /etc/ihatemoney/ihatemoney.cfg
DEBUG = $DEBUG DEBUG = $DEBUG
SQLALCHEMY_DATABASE_URI = "$SQLALCHEMY_DATABASE_URI" SQLALCHEMY_DATABASE_URI = "$SQLALCHEMY_DATABASE_URI"
@ -17,6 +21,25 @@ ADMIN_PASSWORD = '$ADMIN_PASSWORD'
ALLOW_PUBLIC_PROJECT_CREATION = $ALLOW_PUBLIC_PROJECT_CREATION ALLOW_PUBLIC_PROJECT_CREATION = $ALLOW_PUBLIC_PROJECT_CREATION
ACTIVATE_ADMIN_DASHBOARD = $ACTIVATE_ADMIN_DASHBOARD ACTIVATE_ADMIN_DASHBOARD = $ACTIVATE_ADMIN_DASHBOARD
EOF EOF
if [ ! -z "$NIGHTLY" ]; then
# Clone or update repository into /ihatemoney.
if [ ! -d /ihatemoney/.git ]; then
echo "Cloning..."
git clone --depth 1 https://github.com/spiral-project/ihatemoney /ihatemoney
echo "Done cloning."
else
cd /ihatemoney
echo "Updating..."
git pull || echo "Couldn't update; maybe Github is unreachable?"
echo "Done updating."
fi
pip install --no-cache-dir -e /ihatemoney
else
# Get the latest release from PyPy.
pip install --no-cache-dir --upgrade ihatemoney
fi
# Start gunicorn without forking # Start gunicorn without forking
exec gunicorn ihatemoney.wsgi:application \ exec gunicorn ihatemoney.wsgi:application \
-b 0.0.0.0:8000 \ -b 0.0.0.0:8000 \