0Pricing
Docker & DevOps Fundamentals · Lekcja

Zmienne środowiskowe i pliki .env

Konfiguruj usługi Compose w przejrzysty sposób za pomocą zmiennych środowiskowych, podstawiania zmiennych i pliku .env, aby jeden plik Compose działał w środowiskach deweloperskim, testowym i produkcyjnym.

Zmienne środowiskowe i pliki .env to bezpłatna lekcja Docker & DevOps Fundamentals na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Docker & DevOps Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.

Dlaczego wyodrębniać konfigurację?

Wpisywanie haseł i portów na stałe w pliku Compose jest rozwiązaniem kruchym i niebezpiecznym. Zmienne środowiskowe pozwalają zmieniać zachowanie zależnie od środowiska bez edytowania YAML.

  • sekrety pozostają poza kontrolą wersji,
  • jeden plik Compose można ponownie wykorzystywać wszędzie,
  • wartości można nadpisywać podczas uruchamiania.

Klucz environment

Wewnątrz usługi zadeklaruj zmienne pod kluczem environment w postaci mapy. Zmienne te są wstrzykiwane do kontenera podczas uruchamiania.

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: secret

Forma listy

Ten sam klucz akceptuje również listę ciągów KEY=VALUE. Wybierz formę, którą uważasz za bardziej czytelną.

services:
  db:
    image: postgres:16
    environment:
      - POSTGRES_USER=app
      - POSTGRES_PASSWORD=secret

Plik .env

Compose automatycznie odczytuje plik o nazwie .env z katalogu projektu. Zdefiniuj w nim wartości raz, a następnie odwołuj się do nich za pomocą podstawiania ${VAR}.

# .env
PG_USER=app
PG_PASS=secret
WEB_PORT=8080

Podstawianie zmiennych

Używaj ${VAR} w dowolnym miejscu pliku Compose. Compose zastąpi je wartością z pliku .env lub powłoki przed rozpoczęciem parsowania.

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: ${PG_USER}
      POSTGRES_PASSWORD: ${PG_PASS}

Wartości domyślne

Podaj wartość zastępczą za pomocą ${VAR:-default}. Jeśli zmienna nie jest ustawiona lub jest pusta, zostanie użyta wartość domyślna, dzięki czemu stos będzie działać bez kompletnego pliku .env.

ports:
  - "${WEB_PORT:-80}:80"

Wymagane zmienne

Użyj ${VAR:?message}, aby uczynić zmienną wymaganą. Jeśli jej brakuje, Compose przerwie działanie i wyświetli podany komunikat, co pozwala wcześnie wykryć błędną konfigurację.

environment:
  API_KEY: ${API_KEY:?API_KEY must be set}

Dyrektywa env_file

Aby przekazać cały plik zmiennych bezpośrednio do kontenera (a nie tylko użyć ich do podstawiania), użyj env_file. Każdy wiersz stanie się zmienną środowiskową kontenera.

services:
  api:
    image: myapi:1.0
    env_file:
      - api.env

Reguły pierwszeństwa

Gdy zmienna jest definiowana w kilku miejscach, Compose stosuje określoną kolejność. Zmienne środowiskowe powłoki mają pierwszeństwo przed .env, a jawny wpis environment: ma pierwszeństwo przed env_file.

  • Powłoka / opcja CLI -e ma najwyższy priorytet
  • następnie environment:
  • następnie env_file
  • na końcu wartości domyślne obrazu

Sprawdzanie rozwiązanych wartości

Uruchomienie docker compose config wyświetla w pełni rozwiązany plik Compose ze wszystkimi zastosowanymi podstawieniami. To świetny sposób na sprawdzenie, co rzeczywiście zostanie uruchomione.

docker compose config

Sekrety poza Git

Proszę zatwierdzić plik .env.example z wartościami zastępczymi i dodać rzeczywisty plik .env do .gitignore. W przypadku rzeczywistych sekretów produkcyjnych lepiej używać Docker secrets zamiast zmiennych środowiskowych.

# .gitignore
.env

Szybkie sprawdzenie

Jak działają wartości domyślne w podstawianiu?

Podsumowanie

Można już poprawnie konfigurować Compose za pomocą danych środowiskowych:

  • environment: wstrzykuje zmienne dla poszczególnych usług
  • Plik .env dostarcza wartości do podstawiania ${VAR}
  • :- definiuje wartości domyślne, a :? oznacza wartości wymagane
  • docker compose config pokazuje rozwiązany wynik

Dzięki temu jeden plik Compose można przenosić między wszystkimi środowiskami.

Często zadawane pytania

Czy lekcja „Zmienne środowiskowe i pliki .env” jest bezpłatna?

Tak — pełny tekst „Zmienne środowiskowe i pliki .env” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Docker & DevOps Fundamentals, przejdź na CoddyKit PRO. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.

Co nauczysz się w „Zmienne środowiskowe i pliki .env”?

Konfiguruj usługi Compose w przejrzysty sposób za pomocą zmiennych środowiskowych, podstawiania zmiennych i pliku .env, aby jeden plik Compose działał w środowiskach deweloperskim, testowym i produkc… Ćwiczysz Docker & DevOps Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Docker & DevOps Fundamentals?

Nie wymagamy żadnego doświadczenia. Docker & DevOps Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Zmienne środowiskowe i pliki .env”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Docker & DevOps Fundamentals?

Tak. Każda lekcja Docker & DevOps Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym jest Docker Compose?
  2. Pisanie pliku Compose
  3. Wdrażanie aplikacji wielousługowych
  4. Zmienne środowiskowe i pliki .env
← Powrót do Docker & DevOps Fundamentals