CodeBlanks Logo Icon CodeBlanks

WORKDIR komutu

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 install

Gö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/src

WORKDIR, 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

terminal
# buraya yaz

Örnek çözüm

terminal
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.

Soru
____ /app
Cevap
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

Başlangıç bölümündeki tüm dersler