Docker: Utilizzi avanzati dei contesti

Come utilizzare i contesti Docker nei tuoi script

Benvenuto nella documentazione di Stackhero

Stackhero offre una piattaforma Docker cloud CaaS (Containers as a Service) pronta all'uso, progettata per un deployment di container veloce e affidabile:

  • Effettua il deployment in produzione con un semplice docker-compose up. Nessuna configurazione aggiuntiva: avvia semplicemente i tuoi container.
  • Scegli il tuo nome di dominio, automaticamente protetto con HTTPS (ad esempio: https://api.tua-azienda.com, https://www.tua-azienda.com oppure https://backoffice.tua-azienda.com).
  • Approfitta di elevate prestazioni e sicurezza avanzata su un'infrastruttura privata e dedicata.
  • Applica gli aggiornamenti con un solo clic per una manutenzione semplice e senza sforzo.

I tuoi container possono essere operativi in produzione in circa cinque minuti. Stackhero gestisce per te infrastruttura, aggiornamenti e sicurezza, così puoi concentrarti sullo sviluppo delle tue applicazioni. Scopri di più sull'hosting cloud Docker CaaS.

Lavorare con i comandi Docker context use è ottimo per eseguire comandi manualmente. Tuttavia, quando si utilizzano script, esistono metodi alternativi più adatti che semplificano il processo. Invece di invocare direttamente il comando, è possibile impostare il contesto desiderato utilizzando la variabile d'ambiente DOCKER_CONTEXT. Questo approccio si integra perfettamente nei flussi di lavoro degli script e mantiene la chiarezza della configurazione.

Negli esempi forniti, sostituire <XXXXXX>.stackhero-network.com con il dominio specifico della tua istanza Docker (<XXXXXX>.stackhero-network.com).

Ecco un esempio di come impostare il contesto Docker all'interno di uno script bash:

#!/bin/bash
set -e

DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

echo "IP da Docker per l'istanza Stackhero:"
docker run --rm alpine wget -q -O - ifconfig.me

Impostando la variabile d'ambiente DOCKER_CONTEXT, è possibile gestire comodamente il contesto attivo direttamente nei tuoi script.

Per evitare di codificare direttamente il valore di DOCKER_CONTEXT, è possibile caricarlo da un file .env. Questo metodo mantiene organizzate le impostazioni dell'ambiente e facilita le modifiche:

#!/bin/bash
set -e

source .env

echo "IP da Docker per l'istanza Stackhero:"
docker run --rm alpine wget -q -O - ifconfig.me

Crea un file .env con il seguente contenuto:

DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

È possibile anche impostare la variabile DOCKER_CONTEXT in un Makefile. Ecco un esempio di esportazione della variabile ed esecuzione di un container Docker:

# Makefile
export DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

getIp:
	docker run --rm alpine wget -q -O - ifconfig.me

Dopo aver creato il Makefile, invoca il comando utilizzando:

make getIp

Se si verifica l'errore Makefile: *** missing separator. Stop., assicurarsi che la linea docker run [...] inizi con un carattere TAB, non con spazi.

È possibile semplificare ulteriormente la configurazione includendo un file .env nel Makefile. Questo approccio garantisce una gestione centralizzata delle impostazioni dell'ambiente:

# Makefile
include .env
export

getIp:
	docker run --rm alpine wget -q -O - ifconfig.me

Crea un file .env con questo contenuto:

DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

Quindi eseguire il comando:

make getIp

Se si verifica l'errore Makefile: *** missing separator. Stop., verificare che la linea docker run [...] inizi con un carattere TAB anziché con spazi.