23 lines
1018 B
Bash
Executable File
23 lines
1018 B
Bash
Executable File
#!/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 "$@"
|