@@ -21,23 +21,20 @@ CELERY_ROLE="${CELERY_ROLE:-worker}"
2121cd " $WORKSPACEDIR " || exit 255
2222
2323if [[ -n " ${UPDATE_REQUIREMENTS_FROM} " ]]; then
24+ # Need to run as root in the container for this
2425 reqs_file=" ${WORKSPACEDIR} /${UPDATE_REQUIREMENTS_FROM} "
2526 echo " Updating requirements from ${reqs_file} ..."
2627 pip install --upgrade -r " ${reqs_file} "
2728fi
2829
29- if [[ " ${CELERY_ROLE} " == " worker" ]]; then
30- echo " Running initial checks..."
31- /usr/local/bin/python $WORKSPACEDIR /ietf/manage.py check
32- fi
33-
3430CELERY_OPTS=( " ${CELERY_ROLE} " )
3531if [[ -n " ${CELERY_UID} " ]]; then
36- # ensure that some group with the necessary GID exists in container
32+ # ensure that a user with the necessary UID exists in container
3733 if ! id " ${CELERY_UID} " ; then
3834 adduser --system --uid " ${CELERY_UID} " --no-create-home --disabled-login " celery-user-${CELERY_UID} "
3935 fi
4036 CELERY_OPTS+=(" --uid=${CELERY_UID} " )
37+ CELERY_USERNAME=" $( id -nu ${CELERY_UID} ) "
4138fi
4239
4340if [[ -n " ${CELERY_GID} " ]]; then
@@ -46,8 +43,17 @@ if [[ -n "${CELERY_GID}" ]]; then
4643 addgroup --gid " ${CELERY_GID} " " celery-group-${CELERY_GID} "
4744 fi
4845 CELERY_OPTS+=(" --gid=${CELERY_GID} " )
46+ CELERY_GROUP=" $( getent group ${CELERY_GID} | awk -F: ' {print $1}' ) "
4947fi
5048
49+ run_as_celery_uid () {
50+ SU_OPTS=()
51+ if [[ -n " ${CELERY_GROUP} " ]]; then
52+ SU_OPTS+=(" -g" " ${CELERY_GROUP} " )
53+ fi
54+ su " ${SU_OPTS[@]} " " ${CELERY_USERNAME:- root} " -s /bin/sh -c " $@ "
55+ }
56+
5157log_term_timing_msgs () {
5258 # output periodic debug message
5359 while true ; do
@@ -68,6 +74,12 @@ cleanup () {
6874 fi
6975}
7076
77+ if [[ " ${CELERY_ROLE} " == " worker" ]]; then
78+ echo " Running initial checks..."
79+ # Run checks as celery worker if one was specified
80+ run_as_celery_uid /usr/local/bin/python $WORKSPACEDIR /ietf/manage.py check
81+ fi
82+
7183trap ' trap "" TERM; cleanup' TERM
7284# start celery in the background so we can trap the TERM signal
7385celery --app=" ${CELERY_APP:- ietf} " " ${CELERY_OPTS[@]} " " $@ " &
0 commit comments