Dockerfile komutları nelerdir? (FROM, RUN, COPY, ADD, CMD, ENTRYPOINT, ENV vb.)

Dockerfile, Docker konteynerlerinin nasıl oluşturulacağını belirten bir yapılandırma dosyasıdır. Bu dosya, yazılımların ve uygulamaların bağımlılıklarını, ortam değişkenlerini ve koşullarını içeren bir dizi komut içerir. Aşağıda, en yaygın kullanılan Dockerfile komutları açıklanmaktadır.

FROM

FROM komutu, bir Docker imajının temelini belirtir. Eğer bir Dockerfile birden fazla FROM komutu içeriyorsa, her biri yeni bir imaj katmanı oluşturur. Örneğin, bir Python uygulamasını oluşturmak için Python tabanlı bir imaj kullanılabilir:

“`
FROM python:3.9
“`

Bu komut, Python 3.9 imajını temel alarak yeni bir imaj oluşturur. Dockerfile’daki tüm diğer komutlar, bu imaja dayalı olacaktır.

RUN

RUN komutu, komut satırında çalıştırılacak komutları belirtir. Genellikle, bağımlılıkların yüklenmesi veya uygulama yapılandırmalarının yapılması gibi işlemler için kullanılır. RUN komutuyla birden fazla işlem bir arada yapılabilir:

“`
RUN apt-get update && apt-get install -y nginx
“`

Yukarıdaki örnekte, sistem güncellendikten sonra Nginx web sunucusu yüklenmektedir. RUN komutları, imaj oluşturulurken çalıştırılır ve bu nedenle imaj boyutunu etkileyebilir.

COPY

COPY komutu, yerel dosyaların Docker imajına kopyalanmasını sağlar. Bu komut, yerel dosya veya dizinlerin belirtilen hedef dizine kopyalanmasına olanak tanır. Örneğin:

“`
COPY . /app
“`

Bu komut, mevcut dizindeki tüm dosyaları `/app` dizinine kopyalar. COPY komutu, dosya sisteminin kaynaklarından kopyalama yapar.

ADD

ADD komutu, COPY komutuna benzer şekilde, yerel dosyaların Docker imajına kopyalanmasını sağlar. Ancak, ADD komutu bazı ek özellikler sunar. Örneğin, URL’lerden dosya indirme ve arşiv dosyalarını otomatik olarak çıkarma yeteneğine sahiptir. Örnek kullanım:

“`
ADD myapp.tar.gz /app
“`

Bu komut, `myapp.tar.gz` dosyasını `/app` dizinine ekler ve dosya bir arşiv dosyası olduğundan otomatik olarak çıkarır. Ancak, ADD komutunun farklı işlevselliği, kullanımını dikkatlice değerlendirmeyi gerektirir.

CMD

CMD komutu, Docker konteyneri çalıştırıldığında varsayılan olarak hangi komutun çalıştırılacağını belirtir. CMD komutu, sadece bir kez kullanılmalıdır; eğer birden fazla CMD komutu varsa, sonuncusu geçerli olacaktır. Örnek kullanım:

“`
CMD [“nginx”, “-g”, “daemon off;”]
“`

Bu komut, konteyner çalıştırıldığında Nginx’i başlatır. CMD komutu, genellikle konteynerin nasıl çalıştırılması gerektiğini tanımlamak için son aşamada kullanılır.

ENTRYPOINT

ENTRYPOINT komutu, konteyner çalıştırıldığında hangi komutun yürütüleceğini belirler. CMD ile birlikte kullanılabilir, ancak ENTRYPOINT komutu çağrıldığında her zaman kullanılacak olan komutu belirler. Örnek kullanım:

“`
ENTRYPOINT [“python”]
“`

Bu komut, konteyner çalıştırıldığında Python yorumlayıcısını başlatır. ENTRYPOINT, konteynerin davranışını belirlemek için kullanılır ve genellikle uygulama yürütme komutunu içerecektir.

ENV

ENV komutu, ortam değişkenlerini belirlemek için kullanılır. Bu değişkenler, uygulama çalışırken kullanılacak veya yapılandırılacak olan değerleri içerebilir. Örnek kullanım:

“`
ENV APP_ENV production
“`

Bu örnek, `APP_ENV` adında bir ortam değişkeni oluşturur ve değerini `production` olarak ayarlar. Ortam değişkenleri, uygulamanın yapılandırılmasında esneklik sağlayabilir.

EXPOSE

EXPOSE komutu, bir konteynerin hangi portlarını dışa açacağını belirtir. Bu komut, yalnızca bilgi amaçlıdır ve güvenlik açısından önemli bir rol oynamaz; gerçek anlamda portları açmaz. Örnek kullanım:

“`
EXPOSE 80
“`

Bu komut, 80 numaralı portun açılacağını belirtir. Bu port genellikle HTTP trafiği için kullanılır.

VOLUME

VOLUME komutu, konteynerin dışındaki verilere erişimi sağlamak için veri hacmi oluşturur. Bu komut, verilerin konteyner yaşam süresi boyunca kalıcı olmasını sağlar. Örnek kullanım:

“`
VOLUME [“/data”]
“`

Bu komut, `/data` dizinini bir veri hacmi olarak işaretler. Böylece uygulama verileri bu dizinde tutulabilir ve konteyner silinse bile veriler korunur.

ARG

ARG komutu, derleme sırasında kullanılabilecek geçici değişkenler tanımlar. Bu değişkenler, imaj oluşturulurken kullanılabilir, ancak çalıştırma süresinde erişilemez. Örnek kullanım:

“`
ARG VERSION=1.0
“`

Bu komut, `VERSION` adında bir yapı değişkeni tanımlar ve varsayılan değerini `1.0` olarak ayarlar. ARG komutu, güvenlik açısından hassas veriler için kullanılmamalıdır.

SHELL

SHELL komutu, Dockerfile içinde kullanılacak komut kabuğunu belirler. Bu komut, varsayılan olarak `/bin/sh -c` kullanılır, ancak başka bir kabuk belirtmek mümkündür. Örnek kullanım:

“`
SHELL [“/bin/bash”, “-c”]
“`

Bu komut, bir sonraki RUN, CMD veya ENTRYPOINT komutlarının `/bin/bash` kabuğunda çalıştırılacağını belirtir.

Dockerfile, bu komutları kullanarak Docker konteynerlerinin yapılandırılmasını sağlar. Her komut, uygulamanın ihtiyaçlarına göre belirli bir işlev yerine getirir ve bu sayede taşınabilir, modüler ve yönetilebilir uygulama ortamları oluşturulmasına olanak tanır. Dockerfile yazımında dikkatli olmak, imajların boyutunu ve performansını etkileyebilir, bu nedenle en iyi uygulamaların takip edilmesi önemlidir.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR