Created
June 17, 2020 14:24
-
-
Save sodre/928873874d46f5ec6318be807e73c72f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# Run docker-compose in a container | |
# | |
# This script will attempt to mirror the host paths by using volumes for the | |
# following paths: | |
# * $(pwd) | |
# * $(dirname $COMPOSE_FILE) if it's set | |
# * $HOME if it's set | |
# | |
# You can add additional volumes (or any docker run options) using | |
# the $COMPOSE_OPTIONS environment variable. | |
# | |
set -e | |
VERSION="1.26.0" | |
IMAGE="docker/compose:$VERSION" | |
if [ "$DOCKER_HOST" = "unix:///var/run/docker.sock" ]; then | |
unset DOCKER_HOST | |
unset DOCKER_TLS_VERIFY | |
unset DOCKER_CERT_PATH | |
fi | |
# Setup options for connecting to docker host | |
if [ -z "$DOCKER_HOST" ]; then | |
DOCKER_HOST="/var/run/docker.sock" | |
fi | |
if [ -S "$DOCKER_HOST" ]; then | |
DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST" | |
else | |
DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH" | |
fi | |
# Setup volume mounts for compose config and context | |
if [ "$(pwd)" != '/' ]; then | |
VOLUMES="-v $(pwd):$(pwd)" | |
fi | |
if [ -n "$COMPOSE_FILE" ]; then | |
COMPOSE_OPTIONS="$COMPOSE_OPTIONS -e COMPOSE_FILE=$COMPOSE_FILE" | |
compose_dir=$(realpath "$(dirname "$COMPOSE_FILE")") | |
fi | |
# TODO: also check --file argument | |
if [ -n "$compose_dir" ]; then | |
VOLUMES="$VOLUMES -v $compose_dir:$compose_dir" | |
fi | |
if [ -n "$HOME" ]; then | |
VOLUMES="$VOLUMES -v $HOME:$HOME -e HOME" # Pass in HOME to share docker.config and allow ~/-relative paths to work. | |
fi | |
# Only allocate tty if we detect one | |
if [ -t 0 ] && [ -t 1 ]; then | |
DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -t" | |
fi | |
# Always set -i to support piped and terminal input in run/exec | |
DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i" | |
# Handle userns security | |
if docker info --format '{{json .SecurityOptions}}' 2>/dev/null | grep -q 'name=userns'; then | |
DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS --userns=host" | |
fi | |
# shellcheck disable=SC2086 | |
exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is a modification to Docker's own docker-compose script so it works with JetBrains PyCharm on Linux.