Created
April 7, 2017 15:18
-
-
Save danielcosta/8e4529b491c43f0e2322e4ce243a6cee to your computer and use it in GitHub Desktop.
Run docker-compose inside a container
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/bash | |
# | |
# 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.8.1" | |
IMAGE="docker/compose:$VERSION" | |
# 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_dir=$(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 -v $HOME:/root" # mount $HOME in /root to share docker.config | |
fi | |
# Only allocate tty if we detect one | |
if [ -t 1 ]; then | |
DOCKER_RUN_OPTIONS="-t" | |
fi | |
if [ -t 0 ]; then | |
DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i" | |
fi | |
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
Amazing. 💃