Work around docker uid/gid insanity

This commit is contained in:
David Boreham 2023-02-23 20:50:20 -07:00
parent 187c06ef5a
commit b84a28592d
4 changed files with 25 additions and 1 deletions

View File

@ -116,7 +116,11 @@ def command(ctx, include, exclude):
if not dry_run:
if verbose:
print(f"Executing: {build_command}")
envs = {"CERC_NPM_AUTH_TOKEN": npm_registry_url_token} | ({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
# Originally we used the PEP 584 merge operator:
# envs = {"CERC_NPM_AUTH_TOKEN": npm_registry_url_token} | ({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
# but that isn't available in Python 3.8 (default in Ubuntu 20) so for now we use dict.update:
envs = {"CERC_NPM_AUTH_TOKEN": npm_registry_url_token}
envs.update({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
try:
docker.run(builder_js_image_name,
remove=True,

View File

@ -39,6 +39,7 @@ RUN mkdir /scripts
COPY build-npm-package.sh /scripts
COPY yarn-local-registry-fixup.sh /scripts
COPY build-npm-package-local-dependencies.sh /scripts
COPY fixup-for-uid.sh /scripts
ENV PATH="${PATH}:/scripts"
COPY entrypoint.sh .

View File

@ -1,2 +1,3 @@
#!/bin/sh
/scripts/fixup-for-uid.sh
exec "$@"

View File

@ -0,0 +1,18 @@
#!/bin/bash
# Make the container usable for uid/gid != 1000
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi
current_uid=$(id -u)
current_gid=$(id -g)
user_name="hostuser"
# First check the current uid. If == 1000 then exit, nothing needed because that uid already exists
if [[ ${current_uid} == 1000 ]]; then
exit 0
fi
# Also exit for root
if [[ ${current_uid} == 0 ]]; then
exit 0
fi
# Create the user with home dir
useradd -m -d /home/${user_name} -s /bin/bash -g ${current_gid} -u ${current_uid} ${user_name}