Compose Switch is a replacement to the Compose V1 docker-compose (python) executable

Compose Switch

Compose Switch is a replacement to the Compose V1 docker-compose (python) executable. It translates the command line into Compose V2 docker compose then run the latter.

installation

We provide an script for automated installation:

$ curl -fL https://raw.githubusercontent.com/docker/compose-switch/master/install_on_linux.sh | sh

Manual installation

  1. download compose-switch binary for your architecture
$ curl -fL https://github.com/docker/compose-switch/releases/latest/download/docker-compose-linux-amd64 -o /usr/local/bin/compose-switch
  1. make compose-switch executable
$ chmod +x /usr/local/bin/compose-switch
  1. rename docker-compose binary if you already have it installed as /usr/local/bin/docker-compose
$ mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-v1
  1. define an "alternatives" group for docker-compose command:
$ update-alternatives --install /usr/local/bin/docker-compose docker-compose <PATH_TO_DOCKER_COMPOSE_V1> 1
$ update-alternatives --install /usr/local/bin/docker-compose docker-compose /usr/local/bin/compose-switch 99

check installation

$ update-alternatives --display docker-compose
docker-compose - auto mode
  link best version is /usr/local/bin/compose-switch
  link currently points to /usr/local/bin/compose-switch
  link docker-compose is /usr/local/bin/docker-compose
/usr/bin/docker-compose - priority 1
/usr/local/bin/compose-switch - priority 99

select Compose implementation to run by docker-compose

$ update-alternatives --config docker-compose
There are 2 choices for the alternative docker-compose (providing /usr/local/bin/docker-compose).

  Selection    Path                           Priority   Status
------------------------------------------------------------
* 0            /usr/local/bin/compose-switch   99        auto mode
  1            /usr/bin/docker-compose         1         manual mode
  2            /usr/local/bin/compose-switch   99        manual mode

Press 
   
     to keep the current choice[*], or type selection number: 
   
Owner
Docker
Docker helps developers bring their ideas to life by conquering the complexity of app development.
Docker
Comments
  • compose-switch is installed as a Linux

    compose-switch is installed as a Linux "alternative" to docker-compose

    This PR:

    • change installation process so we rely on Linux "alternatives" to replace docker-compose (v1)
    • Drop "enabled|disable-v2" features from compose-switch as user can select implementation by alternatives
    • include Dockerfile for ubuntu and centos to demonstrate installation process works as expected (TODO: automate testing)
    • drop building Windows and OSX binaries (Docker Desktop uses its own flavor of the switch)
    • drop e2e test used to validate enable/disable v2 had the expected effect

    see https://github.com/docker/docker-ce-packaging/pull/553#issuecomment-916136917 for context and https://docker.atlassian.net/browse/IL-584 (internal issue tracker)

  • Continue if docker-compose (v1) is not installed

    Continue if docker-compose (v1) is not installed

    The check at https://github.com/docker/compose-switch/blob/2fe0b713c6839e86239e4930b98fe94f3c68f4e2/install_on_linux.sh#L21 fails if docker-compose (v1) is not installed. Due to the set -e the scripts exits at this point.

    This fix make sure the script continues.

  • docker-compose container name separator switches between `-` and `_`.

    docker-compose container name separator switches between `-` and `_`.

    • [x] I have tried with the latest version of Docker Desktop
    • [x] I have tried disabling enabled experimental features
    • [x] I have uploaded Diagnostics
    • Diagnostics ID: B6CD6541-132F-4401-A847-57D0C1C6D921/20211209193540

    Actual behavior

    docker-compose switches between - and _ as a container name separator between releases.

    Expected behavior

    docker-compose must consistently use - as a container name separator.

    Information

    • Running with Docker Desktop 4.3.0 (71786) on Windows 11, with the WSL2 backend.
    • Docker Compose V2 is checked in the settings. docker-compose version is v2.2.1.
    • This seems to have appeared with the 4.3.0 update. It is not noticed unless you rebuild your environment. I.e. existing environments continue to use - as the container name separator.
    • I had the same issue a couple of months back. That time, it was also fixed with an update.

    Steps to reproduce the behavior

    • Sample docker-compose file:
      version: '3.4'
      
      services:
        db:
          image: postgres:latest
          restart: always
          ports:
            - "127.0.0.1:1020:5432"
          volumes:
            - postgres:/var/lib/postgresql/data
          env_file:
            - .env
          environment:
            - PGDATA=/var/lib/postgresql/data/pgdata
      volumes:
        postgres:
      
    • Steps:
      docker-compose -f docker-compose-test.yaml -p separator-test up
      # creates separator-test_db_1
      docker-compose -f docker-compose-test.yaml -p separator-test down
      sudo wget -q https://github.com/docker/compose/releases/download/v2.2.1/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose-v2.2.1-gh
      sudo ln -sf /usr/local/bin/docker-compose-v2.2.1-gh /usr/bin/docker-compose
      docker-compose -f docker-compose-test.yaml -p separator-test up
      # creates separator-test-db-1
      docker-compose -f docker-compose-test.yaml -p separator-test down
      sudo ln -sf /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose /usr/bin/docker-compose /usr/bin/docker-compose
      
  • wrong URL for an automated installation script

    wrong URL for an automated installation script

    It seems the wrong URL for an automated installation script: "$ curl -fL https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh | sh" image

  • Remove problematic backticks in the install script

    Remove problematic backticks in the install script

    Backticks will try to execute the string within as a command, but docker-compose may not yet exist at this point, and it seems to be the original intention to simply display information, not run the docker-compose command

  • Failed at curl COMPOSE_SWITCH_URL

    Failed at curl COMPOSE_SWITCH_URL

    Line 10 failed for me with "curl: (3) URL using bad/illegal format or missing URL". #37 echo $COMPOSE_SWITCH_URL returned: /docker-compose-linux-amd64ompose-switch/releases/download/v1.0.5

    When output it to a file and cat -A, I got: https://github.com/docker/compose-switch/releases/download/v1.0.5^M/docker-compose-linux-amd64$

  • Panic on empty project-directory

    Panic on empty project-directory

    Description Panic in cobra

    Steps to reproduce the issue:

    1. docker-compose --project-directory "" ps

    Describe the results you received:

    panic: runtime error: index out of range [0] with length 0
    
    goroutine 1 [running]:
    github.com/docker/compose-switch/redirect.Convert(0xc0000b8010, 0x4, 0x4, 0x9, 0xc0000c2628, 0x1)
            /home/runner/go/pkg/mod/github.com/docker/[email protected]/redirect/convert.go:32 +0x8ba
    main.main.func1(0xc0000bc780, 0xc0000b8010, 0x4, 0x4, 0x0, 0x0)
            /home/runner/work/compose-v1v2-switch/compose-v1v2-switch/main.go:59 +0x14d
    github.com/spf13/cobra.(*Command).execute(0xc0000bc780, 0xc0000b8010, 0x4, 0x4, 0xc0000bc780, 0xc0000b8010)
            /home/runner/go/pkg/mod/github.com/spf13/[email protected]/command.go:856 +0x472
    github.com/spf13/cobra.(*Command).ExecuteC(0xc0000bc780, 0xc000096df0, 0x0, 0x160d660)
            /home/runner/go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x375
    github.com/spf13/cobra.(*Command).Execute(...)
            /home/runner/go/pkg/mod/github.com/spf13/[email protected]/command.go:902
    main.main()
            /home/runner/work/compose-v1v2-switch/compose-v1v2-switch/main.go:68 +0x185
    

    Describe the results you expected: Hmm, error or something like that

    Output of docker compose version:

    Docker Compose version v2.5.1
    

    Output of docker info:

    Client:
     Context:    default
     Debug Mode: false
     Plugins:
      buildx: Docker Buildx (Docker Inc., v0.8.2)
      compose: Docker Compose (Docker Inc., v2.5.1)
      sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
      scan: Docker Scan (Docker Inc., v0.17.0)
    
    Server:
     Containers: 0
      Running: 0
      Paused: 0
      Stopped: 0
     Images: 20
     Server Version: 20.10.14
     Storage Driver: overlay2
      Backing Filesystem: extfs
      Supports d_type: true
      Native Overlay Diff: true
      userxattr: false
     Logging Driver: json-file
     Cgroup Driver: cgroupfs
     Cgroup Version: 2
     Plugins:
      Volume: local
      Network: bridge host ipvlan macvlan null overlay
      Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
     Swarm: inactive
     Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
     Default Runtime: runc
     Init Binary: docker-init
     containerd version: 3df54a852345ae127d1fa3092b95168e4a88e2f8
     runc version: v1.0.3-0-gf46b6ba
     init version: de40ad0
     Security Options:
      seccomp
       Profile: default
      cgroupns
     Kernel Version: 5.10.104-linuxkit
     Operating System: Docker Desktop
     OSType: linux
     Architecture: x86_64
     CPUs: 8
     Total Memory: 9.73GiB
     Name: docker-desktop
     ID: UYE6:X3OH:4K6T:V3ZQ:EST7:QJ4X:2JR6:B6SP:ER4V:PI55:QW23:2KLX
     Docker Root Dir: /var/lib/docker
     Debug Mode: false
     HTTP Proxy: http.docker.internal:3128
     HTTPS Proxy: http.docker.internal:3128
     No Proxy: hubproxy.docker.internal
     Registry: https://index.docker.io/v1/
     Labels:
     Experimental: false
     Insecure Registries:
      hubproxy.docker.internal:5000
      127.0.0.0/8
     Live Restore Enabled: false
    
  • Several installation script errors

    Several installation script errors

    The use case is that I want to install docker-compose v2 and then install compose-switch to translate docker-compose v1 commands from an older project.

    But on my brand-new Ubuntu 20.04 server, docker-compose v1 is not installed. This causes a problem when using the install script to install compose-switch.

    The following line:

    https://github.com/docker/compose-switch/blob/2fe0b713c6839e86239e4930b98fe94f3c68f4e2/install_on_linux.sh#L21

    will cause a return code of 127 on $? (as docker-compose doesn't exist), which stops the entire script in its tracks due to the set -e on line 3:

    https://github.com/docker/compose-switch/blob/2fe0b713c6839e86239e4930b98fe94f3c68f4e2/install_on_linux.sh#L3

    If I comment out the set -e then the script can proceed further. But then we encounter another error on line 34:

    https://github.com/docker/compose-switch/blob/2fe0b713c6839e86239e4930b98fe94f3c68f4e2/install_on_linux.sh#L34

    as the backticks cause the shell to try to execute docker-compose, which doesn't exist.

    If I turn the backticks into normal single quotes ' then the script can proceed further and finishes the installation.

    The backticks seem like a straightforward fix but I'm not sure what the intention is behind the set -e was -- if anyone could explain that I'd be happy to make a pull request to fix these issues.

  • Question | compose-switch points to docker-compose v1?

    Question | compose-switch points to docker-compose v1?

    I followed the manual install from the README but it would seem as though compose-switch points to docker-compose v1 and not docker compose v2.

    $ compose-switch --version
    docker-compose version 1.29.2, build 5becea4c
    
    $ docker compose version
    Docker Compose version v2.0.1
    
    $ docker-compose --version
    docker-compose version 1.29.2, build 5becea4c
    

    Output from update-alternatives:

    $ update-alternatives --config docker-compose
    There are 2 choices for the alternative docker-compose (providing /usr/local/bin/docker-compose).
    
      Selection    Path                              Priority   Status
    ------------------------------------------------------------
    * 0            /usr/local/bin/compose-switch      99        auto mode
      1            /usr/local/bin/compose-switch      99        manual mode
      2            /usr/local/bin/docker-compose-v1   1         manual mode
    

    Am I missing something?

  • `docker-compose config` fails with

    `docker-compose config` fails with "undefined network default" error when `default` network is specified for a service with docker compose v2.2.1+

    This issue was tested with compose-switch v1.0.3.

    Here is a relatively minimal docker-compose.yml that can be used to reproduce the issue:

    version: '3.9'
    services:
      helloworld:
        image: hello-world:latest
        networks:
          default:
    

    I have run a few tests to try and track down when this issue started. It seems that this occurs with docker compose v2.2.1+. Failure cases in italics:

    (the directory/project name is compose-regression)

    1. When run through compose-switch v1.0.3, with docker compose v2.1.1:

    $ docker-compose config
    services:
      helloworld:
        image: hello-world:latest
        networks:
          default: null
    networks:
      default:
        name: compose-regression_default
    

    2. When run through docker compose v2.1.1 directly:

    $ docker compose config
    services:
      helloworld:
        image: hello-world:latest
        networks:
          default: null
    networks:
      default:
        name: compose-regression_default
    

    3. When run through compose-switch v1.0.3, with docker compose v2.2.1:

    $ docker-compose config
    service "helloworld" refers to undefined network default: invalid compose project
    

    4. When run through docker compose v2.2.1 directly:

    $ docker compose config
    services:
      helloworld:
        image: hello-world:latest
        networks:
          default: null
    networks:
      default:
        name: compose-regression_default
    

    5. When run though compose-switch v1.0.3, with docker compose v2.2.2 (latest at the time of writing)

    $ docker-compose config
    service "helloworld" refers to undefined network default: invalid compose project
    

    6. When run with docker compose v2.2.2 (latest at the time of writing) directly:

    $ docker compose config
    services:
      helloworld:
        image: hello-world:latest
        networks:
          default: null
    networks:
      default:
        name: compose-regression_default
    
  • Makefile: Fix copy-paste mistakes in the Makefile

    Makefile: Fix copy-paste mistakes in the Makefile

    Some variables was copied from the compose Makefile without having all the variables declared. Added PKG_NAME so we have working internal.Version and removed the removal of e2e tests since they are not in this repository.

    Signed-off-by: Morten Linderud [email protected]

  • Fix: Fix matching of `Location` HTTP header for older `curl` versions

    Fix: Fix matching of `Location` HTTP header for older `curl` versions

    Older version of curl might output HTTP headers in uppercase, causing COMPOSE_SWITCH_VERSION to be empty and the install script to fail with 404:

    $ curl -sI https://github.com/docker/compose-switch/releases/latest
    HTTP/1.1 302 Found
    Server: GitHub.com
    Date: Thu, 27 Oct 2022 19:34:39 GMT
    Content-Type: text/html; charset=utf-8
    Vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, X-Requested-With
    Location: https://github.com/docker/compose-switch/releases/tag/v1.0.5
    Cache-Control: no-cache
    Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
    X-Frame-Options: deny
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 0
    Referrer-Policy: no-referrer-when-downgrade
    Expect-CT: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors"
    Content-Security-Policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com objects-origin.githubusercontent.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events *.actions.githubusercontent.com wss://*.actions.githubusercontent.com online.visualstudio.com/api/v1/locations github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: github.githubassets.com identicons.github.com github-cloud.s3.amazonaws.com secured-user-images.githubusercontent.com/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; worker-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/
    Set-Cookie: _gh_sess=F01z%2FmLqZEOZV1Y0waaCrHpivZp%2BFoZDlDs%2BxskuGB23o8dImsIOGZz59nuJXh0I2KcdF%2B88v2t7kKV%2BQsfMd0BsQr8lUHKsyTtb13ZCzRgygMUzVQgSBYGjklObo8Wx74JlBXgosVOIzSNfdNN2QLWD6tt0Z3G5iRe0lhluHrjHtTtSikaQDJ7rXrJHJbpw5Q%2FPqH2FkqZj2RwBoWaA%2B1JeDZDdmKptikRyeU4sw3IW0a27lkjmOuu6L7XTJifV49bQcMr53CYUN4P7%2F7LaVQ%3D%3D--ixazWaWLj59Z5vJn--yMJtDH2Ugl3b5EBEhhcscw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
    Set-Cookie: _octo=GH1.1.1589679474.1666899278; Path=/; Domain=github.com; Expires=Fri, 27 Oct 2023 19:34:38 GMT; Secure; SameSite=Lax
    Set-Cookie: logged_in=no; Path=/; Domain=github.com; Expires=Fri, 27 Oct 2023 19:34:38 GMT; HttpOnly; Secure; SameSite=Lax
    Content-Length: 0
    X-GitHub-Request-Id: 8C66:2030:1CAB4B4:1F7317D:635ADD4E
    
    $ curl --version
    curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
    Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
    

    In contrast to newer versions of curl:

    $ curl -sI https://github.com/docker/compose-switch/releases/latest
    HTTP/2 302
    server: GitHub.com
    date: Thu, 27 Oct 2022 19:33:53 GMT
    content-type: text/html; charset=utf-8
    vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, X-Requested-With
    location: https://github.com/docker/compose-switch/releases/tag/v1.0.5
    cache-control: no-cache
    strict-transport-security: max-age=31536000; includeSubdomains; preload
    x-frame-options: deny
    x-content-type-options: nosniff
    x-xss-protection: 0
    referrer-policy: no-referrer-when-downgrade
    expect-ct: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors"
    content-security-policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com objects-origin.githubusercontent.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events *.actions.githubusercontent.com wss://*.actions.githubusercontent.com online.visualstudio.com/api/v1/locations github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: github.githubassets.com identicons.github.com github-cloud.s3.amazonaws.com secured-user-images.githubusercontent.com/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; worker-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/
    set-cookie: _gh_sess=7PndnlLYIbJ3iKPZxpOPcB6PzAy%2FYMQTX1%2BGIiHpl8iNDOykxgwR2fzko4v6xLgCrq5l07iOCge7WAMz5nD%2BtFUWV57wT1dWt9WkVWh81m8PedFr%2BWvaIohltpbmnnU8P4BnV%2FJq3XKxyYC5xSqqWgUu2fK5BOhGdNlBFGKBM6IXc4e4WZ2cqg18aPeJuZbIIoe9JYkXPKdXM%2Bj5SGSaQ7TohiskHwK6fk2SfgLZRcFzEQt5m5CPcuWHQAISi5zCub8nY4gRilay0ybNnm9JKg%3D%3D--5G35WbY2eg9KXqfM--41jARm4Q0ZfWWCD3SfgvNA%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
    set-cookie: _octo=GH1.1.974386565.1666899233; Path=/; Domain=github.com; Expires=Fri, 27 Oct 2023 19:33:53 GMT; Secure; SameSite=Lax
    set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Fri, 27 Oct 2023 19:33:53 GMT; HttpOnly; Secure; SameSite=Lax
    content-length: 0
    x-github-request-id: 8C5E:0255:A235A2:B600DD:635ADD21
    
    $ curl --version
    curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
    Release-Date: 2020-01-08
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
    Features: AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets
    

    Now grep match is case-insensitive to match the Location HTTP header correctly for older curl versions

  • Lower case project name when converting to `docker compose`

    Lower case project name when converting to `docker compose`

    docker compose (since 2.5.1) has required the project name to be only lower case (and no . ) - it would be nice if compose-switch would auto-convert any give project name option to lower case. Thus continuing to support the V1 spec against the V2 command.

  • `apt install` for compose-switch?

    `apt install` for compose-switch?

    Any reason why compose-switch is an outlier in terms of not being able to be apt install'd?

    Would be really great if we could install it just like docker-ce and docker-compose-plugin instead of having to manually download the binary, update-alternatives, etc.

  • Update the installation process

    Update the installation process

    Might be like that (Ubuntu 20.04.3 LTS):

    1 - Ensure you have installed docker-compose. $ apt install docker-compose

    2 - download compose-switch binary for your architecture $ curl -fL https://github.com/docker/compose-switch/releases/download/v1.0.4/docker-compose-linux-amd64 -o /usr/bin/compose-switch

    3 - make compose-switch executable $ chmod +x /usr/bin/compose-switch

    4 - rename docker-compose binary to docker-compose-v1 $ mv /usr/bin/docker-compose /usr/bin/docker-compose-v1

    5 - define an "alternatives" group for docker-compose command: $ update-alternatives --install /usr/bin/docker-compose docker-compose /usr/bin/docker-compose-v1 1 $ update-alternatives --install /usr/bin/docker-compose docker-compose /usr/bin/compose-switch 99

Hassle-free minimal CI/CD for git repositories with docker or docker-compose projects.
Hassle-free minimal CI/CD for git repositories with docker or docker-compose projects.

GIT-PIPE Hassle-free minimal CI/CD for git repos for docker-based projects. Features: zero configuration for repos by default automatic encrypted back

Sep 23, 2022
Tool to convert docker-compose files to set of simple docker commands

docker-decompose Tool to convert docker-compose files to set of simple docker commands. Install Use go get to install the latest version of the librar

Apr 12, 2022
Dotnet-appsettings-env - Convert .NET appsettings.json file to Kubernetes, Docker and Docker-Compose environment variables

dotnet-appsettings-env Convert .NET appsettings.json file to Kubernetes, Docker

Dec 30, 2022
Dotnet-appsettings-env - Convert .NET appsettings.json file to Kubernetes, Docker and Docker-Compose environment variables

dotnet-appsettings-env Convert .NET appsettings.json file to Kubernetes, Docker

Feb 16, 2022
Easily run your Compose application to the cloud with compose-cli

This CLI tool makes it easy to run Docker containers and Docker Compose applications in the cloud using either Amazon Elastic Container Service (ECS) or Microsoft Azure Container Instances (ACI) using the Docker commands you already know.

Jan 8, 2023
Sample multi docker compose environment setup

Instructions This is a demonstration of a Multi Docker Compose. The purpose of this repositoy is ongoing research on "Docker compose" architecture des

Oct 21, 2022
Example used to try a compose application with Docker Dev Environments

compose-dev-env Example used to try a Compose application with Docker Dev Environments. This example is based on the nginx-golang-mysql sample of awes

Dec 29, 2022
Mesos Framework to use docker-compose files.
Mesos Framework to use docker-compose files.

mesos-compose Mesos Framework to use docker-compose files. Requirements Apache Mesos min 1.6.0 Mesos with SSL and Authentication is optional Redis Dat

Dec 14, 2022
Execute multiple shell commands like Docker-Compose

parx parx is a simple tool to run multiple commands in parallel while having the output structured like Docker Compose does that. This is useful when

Aug 15, 2022
Docker-compose files for running full Storj network locally

docker-compose based Storj environment storj-up is a swiss-army tool to create / customize Storj clusters with the help of docker-compose (not just st

Nov 16, 2022
Katenary - Convert docker-compose to a configurable helm chart
Katenary - Convert docker-compose to a configurable helm chart

Katenary is a tool to help transforming docker-compose files to a working Helm C

Dec 23, 2022
Faster way to switch between kubeconfig files.
Faster way to switch between kubeconfig files.

kubectl-cf Faster way to switch between kubeconfig files (not contexts). Usage of kubectl-cf: cf Select kubeconfig interactively cf [co

Oct 14, 2022
OC Wrapper to facilitate switch clusters quickly

Description OCS is a wrapper for openshift cli-client oc logins to facilitate switching between multiple clusters easily. Install CP binary from repo/

Jan 10, 2022
Kubeswitch - Easier way to switch your kubernetes context

Switch Kubectl Context Easier way to switch your kubernetes context Set PATH Dow

Jun 17, 2022
GoScanPlayers - Hypixel online player tracker. Runs as an executable and can notify a Discord Webhook
GoScanPlayers - Hypixel online player tracker. Runs as an executable and can notify a Discord Webhook

GoScanPlayers Hypixel online player tracker. Runs as an executable and can notif

Oct 16, 2022
Explore Docker registries and manipulate Docker images!
Explore Docker registries and manipulate Docker images!

L/S tags Utility and API to manipulate (analyze, synchronize and aggregate) images across different Docker registries. Example invocation $ lstags alp

Nov 25, 2022
Docker-based remote code runner / 基于 Docker 的远程代码运行器
Docker-based remote code runner / 基于 Docker 的远程代码运行器

Docker-based remote code runner / 基于 Docker 的远程代码运行器

Nov 9, 2022
ecsk is a CLI tool to interactively use frequently used functions of docker command in Amazon ECS. (docker run, exec, cp, logs, stop)
ecsk is a CLI tool to interactively use frequently used functions of docker command in Amazon ECS. (docker run, exec, cp, logs, stop)

English / 日本語 ecsk ECS + Task = ecsk ?? ecsk is a CLI tool to interactively use frequently used functions of docker command in Amazon ECS. (docker run

Dec 13, 2022
Go-http-server-docker - Simple sample server using docker and go

go-http-server-docker Simple sample webserver using docker and go.

Jan 8, 2022