Docker-compose module: #!shebang

You can make your docker-compose.yaml executable by adding a `shebang line as first line in the YAML file.

As you might know the shebang line is the first line in a shell script that determines which interpretor to run for the script. For Bash scripts it is usually #!/bin/env bash.

We can add a shebang line that tells the kernel that we want the Space module docker-compose to be the interpreter so it can directly run the yaml file.

For Linux add this line as the very first line in your docker-compose.yaml file:

#!/usr/bin/space -m docker-compose /_shebang/

For MacOS systems add this line instead:

#!/usr/bin/env space ! -m docker-compose /_shebang/ !

Then you need to make the yaml file executable:

chmod +x docker-compose.yaml

Alright, it should be runnable directly from command line:

./docker-compose.yaml -- up
./docker-compose.yaml -- ps
./docker-compose.yaml -- down

Pretty neat, uh?

Oh, there is more. We can wrap it using the SSH module to have it being deployed remotely:

./docker-compose.yaml -m ssh /wrap/ -eSSHHOST=address -- up

It is important to add -m ssh /wrap/ -eSSHHOST=address before the double dash --. Because everything left of -- are arguments to Space and everything to the right of -- are arguments to the module.

Remember, that if you want to see the magic behind the scenes, add the -d flag to Space to have it dump out the script for debugging, inspection and sharing.

Edit this page