94 lines
2.1 KiB
Bash
94 lines
2.1 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
|
||
|
|
set -eo pipefail
|
||
|
|
|
||
|
|
REPO_DIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd)"
|
||
|
|
UNSET_USER=0
|
||
|
|
|
||
|
|
if [ -z ${COMPOSE_FILE+x} ]; then
|
||
|
|
COMPOSE_FILE="${REPO_DIR}/compose.yaml"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# _set_user: set (or unset) default user id used to run docker commands
|
||
|
|
#
|
||
|
|
# usage: _set_user
|
||
|
|
#
|
||
|
|
# You can override default user ID (the current host user ID), by defining the
|
||
|
|
# USER_ID environment variable.
|
||
|
|
#
|
||
|
|
# To avoid running docker commands with a custom user, please set the
|
||
|
|
# $UNSET_USER environment variable to 1.
|
||
|
|
function _set_user() {
|
||
|
|
|
||
|
|
if [ $UNSET_USER -eq 1 ]; then
|
||
|
|
USER_ID=""
|
||
|
|
return
|
||
|
|
fi
|
||
|
|
|
||
|
|
# USER_ID = USER_ID or `id -u` if USER_ID is not set
|
||
|
|
USER_ID=${USER_ID:-$(id -u)}
|
||
|
|
|
||
|
|
echo "🙋(user) ID: ${USER_ID}"
|
||
|
|
}
|
||
|
|
|
||
|
|
# docker_compose: wrap docker compose command
|
||
|
|
#
|
||
|
|
# usage: docker_compose [options] [ARGS...]
|
||
|
|
#
|
||
|
|
# options: docker compose command options
|
||
|
|
# ARGS : docker compose command arguments
|
||
|
|
function _docker_compose() {
|
||
|
|
|
||
|
|
echo "🐳(compose) project, file: '${COMPOSE_FILE}'"
|
||
|
|
docker compose \
|
||
|
|
-f "${COMPOSE_FILE}" \
|
||
|
|
--project-directory "${REPO_DIR}" \
|
||
|
|
"$@"
|
||
|
|
}
|
||
|
|
|
||
|
|
# _dc_run: wrap docker compose run command
|
||
|
|
#
|
||
|
|
# usage: _dc_run [options] [ARGS...]
|
||
|
|
#
|
||
|
|
# options: docker compose run command options
|
||
|
|
# ARGS : docker compose run command arguments
|
||
|
|
function _dc_run() {
|
||
|
|
_set_user
|
||
|
|
|
||
|
|
user_args="--user=$USER_ID"
|
||
|
|
if [ -z $USER_ID ]; then
|
||
|
|
user_args=""
|
||
|
|
fi
|
||
|
|
|
||
|
|
_docker_compose run --rm $user_args "$@"
|
||
|
|
}
|
||
|
|
|
||
|
|
# _dc_exec: wrap docker compose exec command
|
||
|
|
#
|
||
|
|
# usage: _dc_exec [options] [ARGS...]
|
||
|
|
#
|
||
|
|
# options: docker compose exec command options
|
||
|
|
# ARGS : docker compose exec command arguments
|
||
|
|
function _dc_exec() {
|
||
|
|
_set_user
|
||
|
|
|
||
|
|
echo "🐳(compose) exec command: '\$@'"
|
||
|
|
|
||
|
|
user_args="--user=$USER_ID"
|
||
|
|
if [ -z $USER_ID ]; then
|
||
|
|
user_args=""
|
||
|
|
fi
|
||
|
|
|
||
|
|
_docker_compose exec $user_args "$@"
|
||
|
|
}
|
||
|
|
|
||
|
|
# _django_manage: wrap django's manage.py command with docker compose
|
||
|
|
#
|
||
|
|
# usage : _django_manage [ARGS...]
|
||
|
|
#
|
||
|
|
# ARGS : django's manage.py command arguments
|
||
|
|
function _django_manage() {
|
||
|
|
_dc_run "backend-dev" python manage.py "$@"
|
||
|
|
}
|
||
|
|
|