BLD run_docker as the host user not as root (#1429)

This commit is contained in:
Hood Chatham 2021-04-04 15:19:54 -04:00 committed by GitHub
parent 55ef56ec91
commit 6fb385bc8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 29 deletions

43
.gitignore vendored
View File

@ -1,31 +1,26 @@
*.a
*.o
*.pyc
.patched
.built
.packaged
.pytest_cache/
__pycache__
geckodriver.log
firefox/
.vscode
.idea
.mypy_cache/
.hypothesis
node_modules/
build
downloads
host
installs
ccache
/emsdk/emsdk
*.egg-info/
__pycache__
.docker_home
.hypothesis
.idea
.mozilla
.mypy_cache/
.pytest_cache/
.vscode
build
ccache
cpython/downloads
cpython/installs
docs/_build/
emsdk/emsdk
geckodriver.log
node_modules/
packages/.artifacts
packages/*/build.log
docs/usage/python-api/
docs/usage/micropip-api/
docs/_build/

View File

@ -91,11 +91,39 @@ case $DEFAULT_PYODIDE_SYSTEM_PORT in
;;
esac
exec docker run \
$PORT_CONFIGURATION_LINE \
-it --rm \
mkdir -p .docker_home
USER_HOME="/src/.docker_home"
USER_NAME="$(id -u -n)"
USER_PASS="x"
USER_ID="$(id -u)"
USER_GID=0
USER_COMMENT_FIELD="${USER_NAME} pyodide user alias"
USER_INTERPRETER="/sbin/nologin"
USER_ACCOUNT_INFO="${USER_NAME}:${USER_PASS}:${USER_ID}:${USER_GID}:${USER_COMMENT_FIELD}:${USER_HOME}:${USER_INTERPRETER}"
# Start a detached container as root, add the host uname and uid to /etc/passwd,
# then run forever
CONTAINER=$(\
docker run \
-d --rm \
-v $PWD:/src \
--user root -e NB_UID=$UID -e NB_GID=$GID \
--user root \
--shm-size 2g \
"${PYODIDE_DOCKER_IMAGE}" \
$DOCKER_COMMAND
/bin/bash -c " \
echo '${USER_ACCOUNT_INFO}' >> /etc/passwd ; \
tail -f /dev/null \
" \
)
EXIT_STATUS=0
# Execute the provided command as the host user with HOME=/src
docker exec \
-it \
--user $(id --user):$(id --group) \
$CONTAINER \
/bin/bash -c "${DOCKER_COMMAND}" || EXIT_STATUS=$?
docker kill $CONTAINER > /dev/null
exit $EXIT_STATUS