]> jfr.im git - irc/UndernetIRC/undernet-development-env.git/blame - docker-compose
chore: add bundled docker-compose script using a docker container
[irc/UndernetIRC/undernet-development-env.git] / docker-compose
CommitLineData
b94ecafb
SW
1#!/bin/sh
2#
3# Run docker-compose in a container
4#
5# This script will attempt to mirror the host paths by using volumes for the
6# following paths:
7# * $(pwd)
8# * $(dirname $COMPOSE_FILE) if it's set
9# * $HOME if it's set
10#
11# You can add additional volumes (or any docker run options) using
12# the $COMPOSE_OPTIONS environment variable.
13#
14
15
16set -e
17
18VERSION="2.15.1-v2"
19IMAGE="linuxserver/docker-compose:$VERSION"
20
21
22# Setup options for connecting to docker host
23if [ -z "$DOCKER_HOST" ]; then
24 DOCKER_HOST="/var/run/docker.sock"
25fi
26if [ -S "$DOCKER_HOST" ]; then
27 DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST"
28else
29 DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH"
30fi
31
32
33# Setup volume mounts for compose config and context
34if [ "$(pwd)" != '/' ]; then
35 VOLUMES="-v $(pwd):$(pwd)"
36fi
37if [ -n "$COMPOSE_FILE" ]; then
38 COMPOSE_OPTIONS="$COMPOSE_OPTIONS -e COMPOSE_FILE=$COMPOSE_FILE"
39 compose_dir=$(realpath $(dirname $COMPOSE_FILE))
40fi
41# TODO: also check --file argument
42if [ -n "$compose_dir" ]; then
43 VOLUMES="$VOLUMES -v $compose_dir:$compose_dir"
44fi
45if [ -n "$HOME" ]; then
46 VOLUMES="$VOLUMES -v $HOME:$HOME -v $HOME:/root" # mount $HOME in /root to share docker.config
47fi
48
49# Only allocate tty if we detect one
50if [ -t 0 -a -t 1 ]; then
51 DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -t"
52fi
53
54# Always set -i to support piped and terminal input in run/exec
55DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i"
56
57
58# Handle userns security
59if [ ! -z "$(docker info 2>/dev/null | grep userns)" ]; then
60 DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS --userns=host"
61fi
62
63exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@"