|
| 1 | +#!/bin/bash |
| 2 | +# setup-docker.sh |
| 3 | +# Installs the docker CLI and configure the host machine's docker group to |
| 4 | +# include the app container user. |
| 5 | + |
| 6 | +set -o errexit |
| 7 | +set -o nounset |
| 8 | +set -o pipefail |
| 9 | +set -o xtrace |
| 10 | + |
| 11 | +###################### |
| 12 | +# Install Docker CLI # |
| 13 | +###################### |
| 14 | + |
| 15 | +mkdir -p /etc/apt/keyrings && \ |
| 16 | +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ |
| 17 | +echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \ |
| 18 | + |
| 19 | +apt-get update && \ |
| 20 | +apt-get install -y docker-ce-cli && \ |
| 21 | + |
| 22 | +########################################### |
| 23 | +# Add container user to host docker group # |
| 24 | +########################################### |
| 25 | + |
| 26 | +# Add jupyter user to the host's docker group |
| 27 | +sed "/^docker:/ s/$/,jupyter/" /etc/host-group > /tmp/host-group.modified |
| 28 | +tee /etc/host-group < /tmp/host-group.modified > /dev/null |
| 29 | + |
| 30 | +# create a matching docker group in the container and add the user to it |
| 31 | +DOCKER_GID=$(grep '^docker:' "/etc/host-group" | cut -d: -f3) |
| 32 | +if ! getent group docker; then |
| 33 | + groupadd -g "$DOCKER_GID" docker |
| 34 | +fi |
| 35 | +usermod -aG docker jupyter |
| 36 | + |
| 37 | +########################### |
| 38 | +# Configuring docker auth # |
| 39 | +########################### |
| 40 | + |
| 41 | +# Give user write permissions to the mounted docker config directory |
| 42 | +chown -R jupyter /home/jupyter/.docker |
| 43 | + |
| 44 | +# Login to docker with gcloud credentials (needs to be re-run every 30 min if needed) |
| 45 | +sudo -u jupyter /bin/bash -c "docker login -u oauth2accesstoken -p $(gcloud auth print-access-token) https://us-central1-docker.pkg.dev" |
0 commit comments