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: secretForma 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=secretPlik .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=8080Podstawianie 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.envReguł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
-ema 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 configSekrety 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
.envSzybkie 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
.envdostarcza wartości do podstawiania${VAR} :-definiuje wartości domyślne, a:?oznacza wartości wymaganedocker compose configpokazuje 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
- Czym jest Docker Compose?
- Pisanie pliku Compose
- Wdrażanie aplikacji wielousługowych
- Zmienne środowiskowe i pliki .env