#!/bin/sh # One entrypoint, one role per container (US08-02). # # The first argument is the management command the image runs — `serve` and `worker` # are the two roles, and every other `python -m photo_pipeline` command (migrate, # diagnostics, backup, restore, dry-run) is passed through unchanged so operating the # container is operating the same CLI. No supervisor: two roles in one container would # share a process lock they are each meant to hold alone (US07-05). set -eu if [ "$(id -u)" = "0" ]; then echo "refusing to run as root: start this image with a non-root UID/GID so files" \ "it renames or writes keep the ownership the mounted library expects" >&2 exit 1 fi role="${1:-serve}" # The health check has to know which role it is checking, and only the API has an # endpoint to check. /tmp is writable for the unprivileged user; /run may not be. printf '%s' "${role}" > "${PHOTO_PIPELINE_ROLE_FILE:-/tmp/photo-pipeline-role}" 2>/dev/null || true exec python -m photo_pipeline "$@"