Docker: Zaawansowane zastosowania kontekstów

Jak używać kontekstów Docker w swoich skryptach

Witamy w dokumentacji Stackhero

Stackhero oferuje gotową do użycia platformę Docker cloud CaaS (Containers as a Service), zaprojektowaną z myślą o szybkich i niezawodnych wdrożeniach kontenerów:

  • Wdrażaj do produkcji za pomocą pojedynczego polecenia docker-compose up. Nie jest wymagana żadna dodatkowa konfiguracja: po prostu uruchom swoje kontenery.
  • Wybierz własną nazwę domeny, automatycznie zabezpieczoną przez HTTPS (na przykład: https://api.twoja-firma.com, https://www.twoja-firma.com lub https://backoffice.twoja-firma.com).
  • Korzystaj z wysokiej wydajności i solidnego poziomu bezpieczeństwa na prywatnej, dedykowanej infrastrukturze.
  • Aktualizuj środowisko jednym kliknięciem, co zapewnia prostą i bezproblemową konserwację.

Twoje kontenery mogą działać w środowisku produkcyjnym już w około pięć minut. Stackhero zarządza infrastrukturą, aktualizacjami i bezpieczeństwem za Ciebie, dzięki czemu możesz skupić się na dostarczaniu swoich aplikacji. Dowiedz się więcej o hostingu Docker CaaS w chmurze.

Praca z poleceniami Docker context use jest świetna do ręcznego wykonywania poleceń. Jednak przy użyciu skryptów istnieją lepsze alternatywne metody, które mogą uprościć proces. Zamiast bezpośrednio wywoływać polecenie, można ustawić żądany kontekst za pomocą zmiennej środowiskowej DOCKER_CONTEXT. To podejście doskonale integruje się z przepływami pracy skryptów i utrzymuje przejrzystość konfiguracji.

W podanych przykładach zamień <XXXXXX>.stackhero-network.com na domenę swojej instancji Docker (<XXXXXX>.stackhero-network.com).

Oto przykład, jak ustawić kontekst Docker w skrypcie bash:

#!/bin/bash
set -e

DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

echo "IP z Docker dla instancji Stackhero:"
docker run --rm alpine wget -q -O - ifconfig.me

Ustawiając zmienną środowiskową DOCKER_CONTEXT, można wygodnie zarządzać aktywnym kontekstem bezpośrednio w swoich skryptach.

Aby uniknąć twardego kodowania DOCKER_CONTEXT, można załadować jego wartość z pliku .env. Ta metoda utrzymuje porządek w ustawieniach środowiska i ułatwia dostosowania:

#!/bin/bash
set -e

source .env

echo "IP z Docker dla instancji Stackhero:"
docker run --rm alpine wget -q -O - ifconfig.me

Utwórz plik .env z następującą zawartością:

DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

Można również ustawić zmienną DOCKER_CONTEXT w Makefile. Oto przykład eksportowania zmiennej i uruchamiania kontenera Docker:

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

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

Po utworzeniu Makefile, wywołaj polecenie używając:

make getIp

Jeśli napotkasz błąd Makefile: *** missing separator. Stop., upewnij się, że linia docker run [...] zaczyna się od znaku TAB, a nie od spacji.

Można dodatkowo uprościć konfigurację, włączając plik .env w Makefile. To podejście zapewnia scentralizowane zarządzanie ustawieniami środowiska:

# Makefile
include .env
export

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

Utwórz plik .env z tą zawartością:

DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

Następnie wykonaj polecenie:

make getIp

Jeśli napotkasz błąd Makefile: *** missing separator. Stop., sprawdź, czy linia docker run [...] zaczyna się od znaku TAB, a nie od spacji.