Docker: Advanced context usages
How to use Docker contexts in your scripts
👋 Welcome to the Stackhero documentation!
Stackhero offers a ready-to-use Docker cloud CaaS (Containers as a Service) solution that provides a host of benefits, including:
- Easily deploy your containers to production with just a
docker-compose up.- Customisable domain name secured with HTTPS (for example, https://api.your-company.com, https://www.your-company.com, https://backoffice.your-company.com).
- Optimal performance and robust security powered by a private and dedicated VM.
- Effortless updates with just a click.
Save time and simplify your life: it only takes 5 minutes to try Stackhero's Docker CaaS cloud hosting solution and deploy your containers to production!
Working with Docker context use commands is excellent for manually executing commands. However, when using scripts, there are more suitable alternative methods that simplify the process. Instead of directly invoking the command, you can set the desired context using the DOCKER_CONTEXT environment variable. This approach integrates seamlessly into script workflows and maintains configuration clarity.
In the examples provided, replace
<XXXXXX>.stackhero-network.comwith your specific Docker instance domain (<XXXXXX>.stackhero-network.com).
Managing Docker contexts in bash scripts
Here is an example of how to set the Docker context within a bash script:
#!/bin/bash
set -e
DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com
echo "IP from Docker for Stackhero instance:"
docker run --rm alpine wget -q -O - ifconfig.me
By setting the DOCKER_CONTEXT environment variable, you can conveniently manage the active context directly in your scripts.
Externalising configuration with a .env file
To avoid hardcoding the DOCKER_CONTEXT, you can load its value from a .env file. This method keeps environment settings organised and facilitates adjustments:
#!/bin/bash
set -e
source .env
echo "IP from Docker for Stackhero instance:"
docker run --rm alpine wget -q -O - ifconfig.me
Create a .env file with the following contents:
DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com
Utilising Docker contexts in Makefiles
You can also set the DOCKER_CONTEXT variable in a Makefile. Here is an example of exporting the variable and executing a Docker container:
# Makefile
export DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com
getIp:
docker run --rm alpine wget -q -O - ifconfig.me
After creating the Makefile, invoke the command using:
make getIp
If you encounter the error
Makefile: *** missing separator. Stop., ensure thedocker run [...]line starts with a TAB character, not spaces.
Leveraging .env files in Makefiles
You can further simplify configuration by including a .env file in your Makefile. This approach ensures centralised management of your environment settings:
# Makefile
include .env
export
getIp:
docker run --rm alpine wget -q -O - ifconfig.me
Create a .env file with this content:
DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com
Then execute the command:
make getIp
If you encounter the error
Makefile: *** missing separator. Stop., verify that thedocker run [...]line begins with a TAB character rather than spaces.