fix(security): run OPEA microservices as non-root user
Summary
- Add non-root
userto all 4 OPEA Dockerfiles (dataprep, retriever, reranker, ChatQnA) following the principle of least privilege - Move EasyOCR models from
/root/.EasyOCR/to/home/user/.EasyOCR/in dataprep - Add
chown -R user:user /app /home/userandUSER userdirective before CMD/ENTRYPOINT in each Dockerfile
Context
Resolves #503 (closed)
All 4 Docker images build successfully as non-root.
Test plan
-
docker compose build dataprep-arango-servicepasses -
docker compose build retriever-arango-servicepasses -
docker compose build rerankerpasses -
docker compose build chatqna-xeon-backend-serverpasses -
Verify containers start correctly as non-root in a full deployment