Cum să transmiteți variabilele de mediu containerelor Docker

Nodul sursă: 1085173

Jack Wallen vă arată cum să transmiteți variabile de mediu containerelor Docker pentru un proces de dezvoltare mai eficient.

docker-cu-valuri.jpg

Ilustrație: Lisa Hornung/TechRepublic

Știați că puteți transmite variabile de mediu de la gazdă la containerele Docker? Folosind această caracteristică, puteți face dezvoltarea acestor containere puțin mai eficientă. Dar, înainte de a intra în cum, trebuie să abordăm ceea ce - cum ar fi, ce sunt variabilele de mediu? 

Nor de citit obligatoriu

VEDEA: Cele mai bune limbaje de programare de învățat și cele mai rele (Premium TechRepublic Premium)

Variabilele de mediu sunt valori denumite dinamic care pot fi stocate și apoi transmise la servicii, aplicații sau scripturi. Aceasta este o modalitate ușoară de a stoca o valoare într-o locație centralizată (de obicei în memorie) și apoi de a o folosi la nivel global. Pentru a afla mai multe despre ce sunt variabilele de mediu, consultați „Linux 101: Ce sunt variabilele de mediu?Matei 22:21

Aceste tipuri de variabile sunt un truc incredibil de la îndemână pentru a avea în mânecă. Și dacă sunteți un dezvoltator de containere, ei vă pot ajuta să vă ușurăm puțin munca.

Permiteți-mi să vă arăt cum.

Ce veți avea nevoie

Singurul lucru de care veți avea nevoie pentru a transmite variabile de mediu containerelor Docker este o instanță care rulează Docker și un utilizator care face parte din grupul docker. Asta este. Să trecem câteva variabile.

Cum să setați o variabilă de mediu

Pentru a transmite o variabilă de mediu unui container, trebuie mai întâi să o setăm. O să demonstrez asta în Linux. Dacă utilizați un alt sistem de operare pentru dezvoltarea containerelor, va trebui să aflați cum să faceți același lucru pe platforma dorită.

Să presupunem că vrem să setăm variabila pentru un utilizator al bazei de date și intenționăm să folosim acea variabilă pentru diferite containere. Am putea seta o variabilă numită DB_USER, care ar fi viabilă pentru orice container care utilizează orice tip de bază de date. Să presupunem că valoarea pentru DB_USER va fi TechRepublic. Pentru a seta acea variabilă, vom lansa comanda:

export DB_USER=TechRepublic

Pentru a verifica că variabila a fost setată, lansați comanda:

echo $DB_USER

Ar trebui să vedeți TechRepublic tipărit în terminal. Gata, ți-ai setat variabila. Să facem acest lucru cu un pas mai departe (de dragul exemplului) și, de asemenea, să setăm o parolă ca variabilă de mediu. Nu ați face acest lucru în producție, dar este o modalitate bună de a ilustra cum se face acest lucru. Setați o variabilă de mediu pentru parolă cu:

export DB_PWORD=T3chR3public

Cum se transmite variabila într-un container

Acum că înțelegeți cum funcționează variabilele de mediu, puteți vedea cum pot fi trecute cu ușurință în containerele dvs. Mai întâi voi demonstra cum se face acest lucru din linia de comandă docker și apoi folosind un fișier .env.

Spre deosebire de utilizarea variabilelor de mediu în Linux, nu le puteți seta pe gazdă și apoi treceți acele variabile setate containerului în același mod în care ați face-o în sistemul gazdă. Cu alte cuvinte, nu puteți folosi variabilele pe care tocmai le-am setat cu comanda Docker, cum ar fi:

rulare docker --name postgresql -e $DB_PWORD -e $DB_USER -d postgres

Dacă încercați să implementați containerul ca atare, acesta va rula, dar va ieși imediat. De ce? Pentru că, spre deosebire de sistemul Linux, unde puteți defini destul de mult variabilele de mediu așa cum doriți, imaginile containerului se așteaptă la anumite variabile. De exemplu, baza de date PostgreSQL nu poate folosi DB_PWORD sau DB_USER, deoarece se așteaptă la POSTGRES_PASSWORD și POSTGRES_USER. În acest scop, puteți seta acele variabile de mediu pe gazdele dvs. Linux cu comenzile:

export POSTGRES_PASSWORD=t3chr3public export POSTGRES_USER=TechRepublic

OK, acum putem rula aceeași comandă cu:

rulare docker --name postgresql -e POSTGRES_PASSWORD -e POSTGRES_USER -d postgres

Comanda va reuși și containerul va rămâne în funcțiune. Îl puteți testa accesând consola PostgreSQL din container prin emiterea:

docker exec -it postgresql psql -U $POSTGRES_USER

Ar trebui să vă găsiți la consola PostgreSQL din containerul dvs.

Cum să transferați variabile cu un fișier .env

Una dintre problemele legate de transmiterea variabilelor de mediu, așa cum este descris mai sus, este că acestea trăiesc în memorie (până când le dezactivați cu dezactivat comanda). Pentru a evita acest lucru, folosim un fișier variabilă de mediu.

Să rămânem cu aceleași variabile pe care le-am folosit mai sus. Creați un nou fișier .env cu comanda:

nano .env

În acel fișier lipiți următoarele:

POSTGRES_PASSWORD=t3chr3public POSTGRES_USER=TechRepublic

Salvați și închideți fișierul.

Acum, cum trecem acele variabile? Simplu, vom lansa comanda:

docker run --name postgresql --env-file .env -d postgres

Asigurați-vă că utilizați calea completă către fișierul dvs. .env (dacă nu executați comanda docker din același director care conține fișierul). Containerul dvs. se va implementa și va fi gata de utilizare. Îl puteți testa accesând consola PostgreSQL. Singura diferență este că trebuie să tastați manual utilizatorul (deoarece nu am setat variabila POSTGRES_USER în sistemul gazdă). Acea comanda ar fi:

docker exec -it postgresql psql -U TechRepublic

Și așa treceți variabilele de mediu într-un container Docker, fie din linia de comandă, fie folosind un fișier .env. Sperăm că puteți utiliza această metodă în fluxul de lucru pentru dezvoltatori pentru a face lucrurile puțin mai eficiente.

De asemenea, vezi

Sursa: https://www.techrepublic.com/article/how-to-pass-environment-variables-to-docker-containers/#ftag=RSS56d97e7

Timestamp-ul:

Mai mult de la Dezvoltator pe TechRepublic