Docker: Advanced context usages

How to use Docker contexts in your scripts

Welcome to the Stackhero documentation

Stackhero provides a ready-to-use Docker cloud CaaS (Containers as a Service) platform, designed for fast and reliable container deployments:

  • Deploy to production with a single docker-compose up. There is no extra setup: just start your containers.
  • Pick your own domain name, secured automatically with HTTPS (for example: https://api.your-company.com, https://www.your-company.com, or https://backoffice.your-company.com).
  • Benefit from strong performance and robust security on private, dedicated infrastructure.
  • Apply updates with one click for simple, low-effort maintenance.

You can have your containers live in production in about five minutes. Stackhero manages the infrastructure, updates, and security for you, so you can focus on delivering your applications. Read more about Docker CaaS cloud hosting.

Working with Docker context use commands is great to manually execute commands. But when using scripts, there are better alternative methods that can 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.com with your specific Docker instance domain (<XXXXXX>.stackhero-network.com).

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.

To avoid hardcoding the DOCKER_CONTEXT, you can load its value from a .env file. This method keeps environment settings organized 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

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 the docker run [...] line starts with a TAB character, not spaces.

You can further simplify configuration by including a .env file in your Makefile. This approach ensures centralized 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 the docker run [...] line begins with a TAB character rather than spaces.