WORKDIR komutu
- Docker & Kubernetes kursu
- Başlangıç
- Ders 59/82
- 4 dk
WORKDIR ile container çalışma dizinini ayarlamayı öğrenirsin.
WORKDIR komutu
WORKDIR, sonraki RUN, CMD, ENTRYPOINT, COPY ve ADD talimatlarının çalıştığı dizini ayarlar. Dizin yoksa oluşturulur. RUN cd /app işe yaramaz, çünkü her RUN yeni bir kabukta çalışır:
# yanlış: cd sonraki satıra taşınmaz
RUN cd /app
RUN npm install # / dizininde çalışır
# doğru
WORKDIR /app
RUN npm installGöreli WORKDIR
WORKDIR birden çok kez kullanılabilir; göreli yollar bir öncekine eklenir. Mutlak yol kullanmak okunurluğu artırır:
WORKDIR /app
WORKDIR src # artık /app/src
RUN pwd # /app/srcWORKDIR, container'a docker exec ile girildiğinde başlangıç dizini olur.
Uygulama Doğru dizinde kurulum
node:20-alpine tabanlı bir Dockerfile yaz: WORKDIR /app; package*.json dosyalarını ./'a kopyala; npm ci --omit=dev çalıştır; tüm projeyi kopyala; CMD exec biçiminde node server.js.
Başlangıç kodu
# buraya yazÖrnek çözüm
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
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 RUN cd /app ve ardından RUN ls hangi dizini listeler?
- Önceki WORKDIR'ı (varsayılan /) Doğru cevap
- /app
- Hata verir
- Boş çıktı
Açıklama: Her RUN talimatı ayrı bir kabuk sürecidir.
2 Sonraki talimatların dizinini ayarla.
____ /app
WORKDIR /app
Açıklama: RUN cd kalıcı değildir; WORKDIR kalıcıdır.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
WORKDIR /app |
Dizini ayarlar ve oluşturur |
RUN cd /app |
Yalnızca o RUN için |
WORKDIR src |
Göreli: öncekine eklenir |
docker exec |
WORKDIR'da başlar |