Initialization cleanup

* Guarantees that the flask db upgrade happens before cron starts
* De-duplicates upgrade logic
* Provides a convenient place to put more startup steps
This commit is contained in:
Ben Rog-Wilhelm 2023-04-22 04:33:27 -05:00
parent 94e40ff725
commit 6f2e2243b2
4 changed files with 10 additions and 4 deletions

View file

@ -19,13 +19,14 @@ EXPOSE 80/tcp
ENV FLASK_APP=files/cli:app
CMD [ "bootstrap/init.sh" ]
###################################################################
# Release container
FROM base AS release
COPY bootstrap/supervisord.conf.release /etc/supervisord.conf
CMD [ "/usr/local/bin/supervisord", "-c", "/etc/supervisord.conf" ]
###################################################################
@ -37,7 +38,6 @@ COPY thirdparty/sqlalchemy-easy-profile sqlalchemy-easy-profile
RUN cd sqlalchemy-easy-profile && python3 setup.py install
COPY bootstrap/supervisord.conf.dev /etc/supervisord.conf
CMD [ "/usr/local/bin/supervisord", "-c", "/etc/supervisord.conf" ]
###################################################################

6
bootstrap/init.sh Normal file
View file

@ -0,0 +1,6 @@
#!/bin/bash
set -euxo pipefail
python3 -m flask db upgrade # this does not actually return error codes properly!
/usr/local/bin/supervisord -c /etc/supervisord.conf

View file

@ -12,7 +12,7 @@ supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[program:service]
directory=/service
command=sh -c 'python3 -m flask db upgrade && WERKZEUG_DEBUG_PIN=off ENABLE_SERVICES=true python3 -m flask --debug run --host=0.0.0.0 --port=80'
command=sh -c 'WERKZEUG_DEBUG_PIN=off ENABLE_SERVICES=true python3 -m flask --debug run --host=0.0.0.0 --port=80'
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr

View file

@ -12,7 +12,7 @@ supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[program:service]
directory=/service
command=sh -c 'python3 -m flask db upgrade && ENABLE_SERVICES=true gunicorn files.__main__:app -k gevent -w ${CORE_OVERRIDE:-$(( `nproc` * 2 ))} --reload -b 0.0.0.0:80 --max-requests 1000 --max-requests-jitter 500'
command=sh -c 'ENABLE_SERVICES=true gunicorn files.__main__:app -k gevent -w ${CORE_OVERRIDE:-$(( `nproc` * 2 ))} --reload -b 0.0.0.0:80 --max-requests 1000 --max-requests-jitter 500'
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr