Skip to content

Instantly share code, notes, and snippets.

@chriscz
Last active October 1, 2024 11:22
Show Gist options
  • Save chriscz/5e00de6c033bfd8cea66ceea67a18a41 to your computer and use it in GitHub Desktop.
Save chriscz/5e00de6c033bfd8cea66ceea67a18a41 to your computer and use it in GitHub Desktop.

Built on-top of phusion/baseimage

Application is mounted at /app

  1. update-app-ids.sh
#!/bin/bash
set -eou pipefail

# Updates the `app` user's UID & GID
#
# USAGE:
#   update-app-ids UID GID

OLD_UID=`id -u app`
OLD_GID=`id -g app`

NEW_UID=$1
NEW_GID=$2

# Change UID & GID of the default app user
groupmod -g $NEW_GID app
usermod -u $NEW_UID -g $NEW_GID app

# Change permissions of old files
chown -R $NEW_UID:$NEW_GID /home/app
  1. entrypoint.sh
#!/bin/bash
set -eou pipefail

if [ ! -z "${PUBLIC_KEY_DATA:-}" ]; then
  echo "${PUBLIC_KEY_DATA}" >> /home/app/.ssh/authorized_keys
fi

echo '/app' > /home/app/pwd

if [ -n "${DEVELOPER_UID:-}" -a -n "${DEVELOPER_GID:-}" ]; then
  update-app-ids "${DEVELOPER_UID}" "${DEVELOPER_GID}"
  chown -R app:app /app
fi

/sbin/my_init "$@"
  1. docker-compose.yml
app:
  # ...
  environment:                                                                                                                                                                                                   
  - DEVELOPER_UID=${DEVELOPER_UID}                                                                                                                                                                             
  - DEVELOPER_GID=${DEVELOPER_GID}                                                                                                                                                                             
  - PUBLIC_KEY_DATA=${PUBLIC_KEY_DATA} 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment