#!/usr/bin/env bash set -euo pipefail . "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh" # Create S3 dirs step mkdir -p /srv/philomena/priv/static/system/images/thumbs step mkdir -p /srv/philomena/priv/s3/philomena step ln -sf /srv/philomena/priv/static/system/images/thumbs /srv/philomena/priv/s3/philomena/images step ln -sf /srv/philomena/priv/static/system/images /srv/philomena/priv/s3/philomena/adverts step ln -sf /srv/philomena/priv/static/system/images /srv/philomena/priv/s3/philomena/avatars step ln -sf /srv/philomena/priv/static/system/images /srv/philomena/priv/s3/philomena/badges step ln -sf /srv/philomena/priv/static/system/images /srv/philomena/priv/s3/philomena/tags # For compatibility with musl libc export CARGO_FEATURE_DISABLE_INITIAL_EXEC_TLS=1 export CARGO_HOME=/srv/philomena/.cargo background() { # Log the execution with (bg-jobs) prefix to differentiate it from the main process export TASK="bg-jobs" while :; do step mix run -e 'Philomena.Release.update_channels()' > /dev/null step mix run -e 'Philomena.Release.verify_artist_links()' > /dev/null step mix run -e 'Philomena.Release.update_stats()' > /dev/null step mix run -e 'Philomena.Release.clean_moderation_logs()' > /dev/null step mix run -e 'Philomena.Release.generate_autocomplete()' > /dev/null sleep 300 done } # Always install assets ( step cd /srv/philomena/assets step npm install ) # Always install mix dependencies ( step cd /srv/philomena step mix deps.get ) # Sleep to allow OpenSearch to finish initializing # if it's not done doing whatever it does yet info "Waiting for OpenSearch" until step wget --no-check-certificate -qO - http://opensearch:9200; do sleep 2 done # Try to create the database if it doesn't exist yet if step createdb -h postgres -U postgres philomena_dev; then step mix ecto.setup_dev step mix reindex_all fi # Explicitly compile deps to avoid racing step mix compile # Run background jobs background & info "Starting the server" # Run the application START_WORKER=true exec mix phx.server