diff --git a/.gitignore b/.gitignore index 37b2c13..7a37380 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ __pycache__ venv/ .venv .vscode -env \ No newline at end of file +env +.idea/ diff --git a/docker/Dockerfile b/docker/Dockerfile index 32c7573..b83ce13 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -12,6 +12,9 @@ WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt +# Copy startup script +COPY docker/startup.sh . + # Copy application COPY . . @@ -27,10 +30,6 @@ ENV CONTAINER_PORT=5000 \ EXPOSE ${CONTAINER_PORT} -# Setup Database - -RUN alembic upgrade head - # run gunicorn -CMD ["sh", "-c", "gunicorn --bind ${BIND_INTERFACE}:${CONTAINER_PORT} --graceful-timeout ${GRACEFUL_TIMEOUT} --timeout ${TIMEOUT} --worker-class=uvicorn.workers.UvicornWorker --worker-connections ${WORKER_CONNECTIONS} --workers ${WORKERS} wsgi-service:app"] +CMD ["sh", "./startup.sh"] diff --git a/docker/startup.sh b/docker/startup.sh new file mode 100644 index 0000000..5abfdab --- /dev/null +++ b/docker/startup.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# rald-server startup script + +check_env_variable() { + if [ -z $1 ]; then + echo "$2 environment variable not set"; + exit 1 + fi + echo "$2 -> $1" +} + +echo "staring up rald-server..." + +echo "Checking environment variales:" +check_env_variable $BIND_INTERFACE "BIND_INTERFACE" +check_env_variable $CONTAINER_PORT "CONTAINER_PORT" +check_env_variable $GRACEFUL_TIMEOUT "GRACEFUL_TIMEOUT" +check_env_variable $TIMEOUT "TIMEOUT" +check_env_variable $WORKER_CONNECTIONS "WORKER_CONNECTIONS" +check_env_variable $WORKERS "WORKERS" + +cd /app +alembic upgrade head +gunicorn --bind ${BIND_INTERFACE}:${CONTAINER_PORT} --graceful-timeout ${GRACEFUL_TIMEOUT} --timeout ${TIMEOUT} --worker-class=uvicorn.workers.UvicornWorker --worker-connections ${WORKER_CONNECTIONS} --workers ${WORKERS} wsgi-service:app