diff --git a/docker-compose/docker-compose.bash b/docker-compose/docker-compose.bash new file mode 100644 index 0000000000..b2575e9aa6 --- /dev/null +++ b/docker-compose/docker-compose.bash @@ -0,0 +1,57 @@ +#!@bash@ +## +## docker-compose -- run docker-compose in a container +## + +set -e + +# 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=$(sealpath $(dirname $COMPOSE_FILE)) +fi +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" +fi + +# only allocate tty if we detect one +if [ -t 0 ]; then + if [ -t 1 ]; then + DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -t" + fi +else + DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i" +fi + +# handle userns security +if [ ! -z "$(docker info 2>/dev/null | grep userns)" ]; then + DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS --userns=host" +fi + +exec @l_prefix@/bin/docker \ + run \ + --rm \ + $DOCKER_RUN_OPTIONS \ + $DOCKER_ADDR \ + $COMPOSE_OPTIONS \ + $VOLUMES \ + -w "$(pwd)" \ + docker/compose:@version@ \ + "$@" + diff --git a/docker-compose/docker-compose.spec b/docker-compose/docker-compose.spec new file mode 100644 index 0000000000..1308a11444 --- /dev/null +++ b/docker-compose/docker-compose.spec @@ -0,0 +1,80 @@ +## +## docker-compose.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2018 OpenPKG Project +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package information +Name: docker-compose +Summary: Docker Container Composition +URL: https://docs.docker.com/compose/ +Vendor: Docker Inc. +Packager: OpenPKG Project +Distribution: OpenPKG Community +Class: EVAL +Group: Filesystem +License: Apache +Version: 1.23.1 +Release: 20181111 + +# list of sources +Source0: docker-compose.bash + +# build information +BuildPreReq: OpenPKG, openpkg >= 20160101 +PreReq: OpenPKG, openpkg >= 20160101, docker + +%description + Docker Compose is a tool for defining and running multi-container + Docker applications. With Docker Compose, you use a Compose file to + configure your application's services. Then, using a single command, + you create and start all the services from your configuration. + +%track + prog docker-compose = { + version = %{version} + url = https://github.com/docker/compose/releases + regex = (__VER__)\.tar\.gz + } + +%prep + %setup -q -T -c + +%build + +%install + # create directory hierarchy + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/bin + + # install program + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + -e 's;@bash@;%{l_bash};g' \ + -e 's;@version@;%{version};g' \ + %{SOURCE docker-compose.bash} \ + $RPM_BUILD_ROOT%{l_prefix}/bin/docker-compose + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} + +%files -f files + +%clean +