microservices/deployment-service/snakeapi_service/entrypoint.sh
2025-05-02 00:12:05 -07:00

29 lines
945 B
Bash

#!/usr/bin/env bash
set -eux
NOTEBOOK_DIR="notebooks"
mkdir -p "${NOTEBOOK_DIR}"
# sync notebooks from S3
aws --endpoint-url "$AWS_ENDPOINT_URL_S3" --region "$AWS_REGION" \
s3 sync "s3://$COMMON_BUCKET/$INSTANCE_PREFIX/notebooks/" "${NOTEBOOK_DIR}/"
# pick latest notebook
latest_ipynb=$(ls -t "${NOTEBOOK_DIR}"/*.ipynb | head -n1)
cp "$latest_ipynb" "${NOTEBOOK_DIR}/notebook.ipynb"
# convert notebook to script
jupyter nbconvert --to script "${NOTEBOOK_DIR}/notebook.ipynb" \
--output notebook --output-dir "${NOTEBOOK_DIR}"
# remove IPython magics only
sed -i '/get_ipython()/d' "${NOTEBOOK_DIR}/notebook.py"
sed -i '/^!/d' "${NOTEBOOK_DIR}/notebook.py"
sed -i '/^%/d' "${NOTEBOOK_DIR}/notebook.py"
# remove standalone Flask run calls
sed -i '/app\.run(/d' "${NOTEBOOK_DIR}/notebook.py"
# export path and launch server
export NOTEBOOK_PATH="$(pwd)/${NOTEBOOK_DIR}/notebook.py"
exec python snakeapi_server.py