ENV komutu
- Docker & Kubernetes kursu
- Başlangıç
- Ders 56/82
- 4 dk
Dockerfile'da ENV ile değişken tanımlamayı öğrenirsin.
ENV komutu
ENV, Dockerfile'da image'a kalıcı bir ortam değişkeni ekler. Hem sonraki build adımlarında hem de çalışan container'da geçerlidir; docker run -e ile geçersiz kılınabilir:
FROM python:3.12-slim
ENV PYTHONUNBUFFERED=1 \
PORT=8000
WORKDIR /app
CMD ["python", "app.py"]PYTHONUNBUFFERED=1, Python'un çıktıyı tamponlamadan yazmasını sağlar; böylece log'lar docker logs'ta hemen görünür.
ENV ile yol ve sürüm
ENV değişkenleri sonraki talimatlarda $AD ile kullanılabilir. Bu, sürüm numarası ya da kurulum yolunu tek yerde tanımlamayı sağlar:
ENV APP_HOME=/opt/app
WORKDIR $APP_HOME
ENV PATH="$APP_HOME/bin:$PATH"
COPY bin/ $APP_HOME/bin/Parola gibi gizli değerler ENV ile image'a yazılmamalıdır: docker history ve docker inspect onları gösterir.
Uygulama ENV ile varsayılanlar
node:20-alpine tabanlı bir Dockerfile yaz: NODE_ENV=production ve PORT=3000 değişkenlerini ENV ile tanımla; WORKDIR /app; COPY . .; EXPOSE 3000; CMD exec biçiminde node server.js.
Başlangıç kodu
# buraya yazÖrnek çözüm
FROM node:20-alpine
ENV NODE_ENV=production PORT=3000
WORKDIR /app
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]Beklenen çıktı
[+] Building 2.9s (8/8) FINISHED => naming to docker.io/library/web:latest done
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Image'da ENV PORT=8000 varken docker run -e PORT=9000 img ile container'da PORT kaçtır?
- 8000
- Boş
- 8000,9000
- 9000 Doğru cevap
Açıklama: Çalışma anı değeri image'daki varsayılanın yerine geçer.
2 Python çıktısını tamponsuz yap.
____ PYTHONUNBUFFERED=1
ENV PYTHONUNBUFFERED=1
Açıklama: ENV hem build'de hem çalışma anında geçerlidir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
ENV |
Image'da kalıcı değişken |
-e |
Çalışma anında geçersiz kılar |
$APP_HOME |
Değişkenin kullanımı |
PYTHONUNBUFFERED |
Anında log |