fix(input): run watcher as codex user
This commit is contained in:
		| @@ -11,7 +11,6 @@ RUN apt-get update \ | |||||||
|     && apt-get install --yes --no-install-recommends \ |     && apt-get install --yes --no-install-recommends \ | ||||||
|         python3 \ |         python3 \ | ||||||
|         python3-venv \ |         python3-venv \ | ||||||
|         gosu \ |  | ||||||
|     && apt-get clean \ |     && apt-get clean \ | ||||||
|     && rm -rf /var/lib/apt/lists/* |     && rm -rf /var/lib/apt/lists/* | ||||||
|  |  | ||||||
| @@ -19,8 +18,9 @@ RUN apt-get update \ | |||||||
| # The CLI expects credentials/configuration from the mounted ~/.codex directory. | # The CLI expects credentials/configuration from the mounted ~/.codex directory. | ||||||
| RUN npm install --location=global @openai/codex | RUN npm install --location=global @openai/codex | ||||||
|  |  | ||||||
| RUN groupadd -r codex && \ | RUN groupmod --new-name codex node \ | ||||||
|     useradd -r -m -g codex -s /bin/bash codex |     && usermod --login codex --home /home/codex --move-home node \ | ||||||
|  |     && chown -R codex:codex /home/codex | ||||||
|  |  | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
|  |  | ||||||
| @@ -28,4 +28,6 @@ COPY watch_and_customize.py entrypoint.sh JobDescriptionNormalizerPrompt.md ./ | |||||||
|  |  | ||||||
| RUN chmod +x /app/watch_and_customize.py /app/entrypoint.sh | RUN chmod +x /app/watch_and_customize.py /app/entrypoint.sh | ||||||
|  |  | ||||||
|  | USER codex | ||||||
|  |  | ||||||
| ENTRYPOINT ["/app/entrypoint.sh"] | ENTRYPOINT ["/app/entrypoint.sh"] | ||||||
|   | |||||||
| @@ -8,8 +8,6 @@ services: | |||||||
|     container_name: RCEO-AI-ResumeCustomizer-InputProcessor |     container_name: RCEO-AI-ResumeCustomizer-InputProcessor | ||||||
|     restart: "no" |     restart: "no" | ||||||
|     environment: |     environment: | ||||||
|       PUID: "${LOCAL_UID:-1000}" |  | ||||||
|       PGID: "${LOCAL_GID:-1000}" |  | ||||||
|       POLL_INTERVAL_SECONDS: "${POLL_INTERVAL_SECONDS:-5}" |       POLL_INTERVAL_SECONDS: "${POLL_INTERVAL_SECONDS:-5}" | ||||||
|       CODEX_TIMEOUT_SECONDS: "${CODEX_TIMEOUT_SECONDS:-600}" |       CODEX_TIMEOUT_SECONDS: "${CODEX_TIMEOUT_SECONDS:-600}" | ||||||
|     volumes: |     volumes: | ||||||
|   | |||||||
| @@ -1,58 +1,14 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| set -euo pipefail | set -euo pipefail | ||||||
|  |  | ||||||
| USER_NAME=codex | USER_NAME=${USER_NAME:-codex} | ||||||
| PUID=${PUID:-1000} |  | ||||||
| PGID=${PGID:-1000} |  | ||||||
|  |  | ||||||
| ensure_group() { |  | ||||||
|   local desired_gid=$1 |  | ||||||
|   local group_name |  | ||||||
|  |  | ||||||
|   if getent group "${desired_gid}" >/dev/null 2>&1; then |  | ||||||
|     group_name=$(getent group "${desired_gid}" | cut -d: -f1) |  | ||||||
|     echo "${group_name}" |  | ||||||
|     return 0 |  | ||||||
|   fi |  | ||||||
|  |  | ||||||
|   if getent group "${USER_NAME}" >/dev/null 2>&1; then |  | ||||||
|     groupmod -o -g "${desired_gid}" "${USER_NAME}" |  | ||||||
|     echo "${USER_NAME}" |  | ||||||
|     return 0 |  | ||||||
|   fi |  | ||||||
|  |  | ||||||
|   groupadd -o -g "${desired_gid}" "${USER_NAME}" |  | ||||||
|   echo "${USER_NAME}" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| ensure_user() { |  | ||||||
|   local desired_uid=$1 |  | ||||||
|   local primary_group=$2 |  | ||||||
|  |  | ||||||
|   if getent passwd "${USER_NAME}" >/dev/null 2>&1; then |  | ||||||
|     usermod -o -u "${desired_uid}" -g "${primary_group}" -d "/home/${USER_NAME}" -s /bin/bash "${USER_NAME}" |  | ||||||
|   else |  | ||||||
|     useradd -o -m -u "${desired_uid}" -g "${primary_group}" -s /bin/bash "${USER_NAME}" |  | ||||||
|   fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| GROUP_NAME=$(ensure_group "${PGID}") |  | ||||||
| ensure_user "${PUID}" "${GROUP_NAME}" |  | ||||||
|  |  | ||||||
| USER_HOME=$(eval echo "~${USER_NAME}") | USER_HOME=$(eval echo "~${USER_NAME}") | ||||||
|  |  | ||||||
| mkdir -p /workspace/inbox /workspace/outbox /workspace/processed /workspace/failed | mkdir -p /workspace/inbox /workspace/outbox /workspace/processed /workspace/failed | ||||||
| mkdir -p "${USER_HOME}/.codex" | mkdir -p "${USER_HOME}/.codex" | ||||||
|  |  | ||||||
| for path in /workspace/inbox /workspace/outbox /workspace/processed /workspace/failed "${USER_HOME}" "${USER_HOME}/.codex"; do |  | ||||||
|   if [ -e "${path}" ]; then |  | ||||||
|     chown -R "${PUID}:${PGID}" "${path}" |  | ||||||
|   fi |  | ||||||
| done |  | ||||||
|  |  | ||||||
| export HOME="${USER_HOME}" | export HOME="${USER_HOME}" | ||||||
| export XDG_CACHE_HOME="${USER_HOME}/.cache" | export XDG_CACHE_HOME="${USER_HOME}/.cache" | ||||||
| mkdir -p "${XDG_CACHE_HOME}" | mkdir -p "${XDG_CACHE_HOME}" | ||||||
| chown -R "${PUID}:${PGID}" "${XDG_CACHE_HOME}" |  | ||||||
|  |  | ||||||
| exec gosu "${PUID}:${PGID}" python3 /app/watch_and_customize.py | exec python3 /app/watch_and_customize.py | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user