GoDasturchi
Environment Variables

Environment Variables

Muhit o'zgaruvchilari (Docker'da)

"Environment Variables" darsida ("Building CLI Apps" kursida) os.Getenv orqali muhit o'zgaruvchilarini o'qishni ko'rgan edingiz. Konteynerlar bilan ishlaganda bu ayniqsa muhim: konteyner ichidagi kod hech qachon o'zgarmasligi kerak (bitta image — dev, staging, production hammasida bir xil ishlatiladi), lekin sozlamalar (baza manzili, API kaliti) muhitdan-muhitga farq qiladi.

terminal
$ docker run -e APP_ENV=production -e PORT=9090 mening-serverim

# Bir nechtasini fayldan o'qish:
$ docker run --env-file .env mening-serverim

-e KALIT=QIYMAT — konteyner ichiga bitta muhit o'zgaruvchisini uzatadi; Go kodingiz uni oddiy os.Getenv("APP_ENV") bilan o'qiydi, xuddi u to'g'ridan-to'g'ri terminalda o'rnatilgandek. --env-file esa ko'plab o'zgaruvchini bitta faylda (KALIT=QIYMAT qatorlari bilan) berish imkonini beradi — bu qo'lda o'nlab -e yozishdan qulayroq.

Dockerfile
# Dockerfile ichida standart qiymat berish (docker run -e bilan bekor qilinishi mumkin):
ENV APP_ENV=development
ENV PORT=8080

ENV buyrug'i Dockerfile ichida standart qiymatlarni belgilaydi — bu "Constants and Zero Values" darsida ko'rgan "standart qiymat, kerak bo'lsa bekor qilinadigan" g'oyasining Docker'dagi ko'rinishi. Muhim xavfsizlik qoidasi: hech qachon parol yoki API kalitini to'g'ridan-to'g'ri Dockerfile'ga yozmang (u image ichida abadiy qoladi va uni ko'rgan har kim o'qiy oladi) — buning o'rniga ularni har doim docker run -e yoki maxfiy ma'lumotlarni boshqarish tizimlari ("Secrets Management" darsida ko'ramiz) orqali uzating.

Key Takeaway

Key Takeaway:

Bitta image barcha muhitlarda (dev, staging, prod) bir xil ishlatiladi; ular orasidagi farq docker run -e yoki --env-file orqali beriladigan muhit o'zgaruvchilari bilan boshqariladi — sirlar esa hech qachon Dockerfile'ga yozilmaydi.

NEXT UP

Docker Compose Basics

Environment Variables

Muhit o'zgaruvchilari (Docker'da)

"Environment Variables" darsida ("Building CLI Apps" kursida) os.Getenv orqali muhit o'zgaruvchilarini o'qishni ko'rgan edingiz. Konteynerlar bilan ishlaganda bu ayniqsa muhim: konteyner ichidagi kod hech qachon o'zgarmasligi kerak (bitta image — dev, staging, production hammasida bir xil ishlatiladi), lekin sozlamalar (baza manzili, API kaliti) muhitdan-muhitga farq qiladi.

terminal
$ docker run -e APP_ENV=production -e PORT=9090 mening-serverim

# Bir nechtasini fayldan o'qish:
$ docker run --env-file .env mening-serverim

-e KALIT=QIYMAT — konteyner ichiga bitta muhit o'zgaruvchisini uzatadi; Go kodingiz uni oddiy os.Getenv("APP_ENV") bilan o'qiydi, xuddi u to'g'ridan-to'g'ri terminalda o'rnatilgandek. --env-file esa ko'plab o'zgaruvchini bitta faylda (KALIT=QIYMAT qatorlari bilan) berish imkonini beradi — bu qo'lda o'nlab -e yozishdan qulayroq.

Dockerfile
# Dockerfile ichida standart qiymat berish (docker run -e bilan bekor qilinishi mumkin):
ENV APP_ENV=development
ENV PORT=8080

ENV buyrug'i Dockerfile ichida standart qiymatlarni belgilaydi — bu "Constants and Zero Values" darsida ko'rgan "standart qiymat, kerak bo'lsa bekor qilinadigan" g'oyasining Docker'dagi ko'rinishi. Muhim xavfsizlik qoidasi: hech qachon parol yoki API kalitini to'g'ridan-to'g'ri Dockerfile'ga yozmang (u image ichida abadiy qoladi va uni ko'rgan har kim o'qiy oladi) — buning o'rniga ularni har doim docker run -e yoki maxfiy ma'lumotlarni boshqarish tizimlari ("Secrets Management" darsida ko'ramiz) orqali uzating.

Key Takeaway

Key Takeaway:

Bitta image barcha muhitlarda (dev, staging, prod) bir xil ishlatiladi; ular orasidagi farq docker run -e yoki --env-file orqali beriladigan muhit o'zgaruvchilari bilan boshqariladi — sirlar esa hech qachon Dockerfile'ga yozilmaydi.

NEXT UP

Docker Compose Basics