Dockerfile, Docker konteynerlerini oluşturmak için kullanılan metin tabanlı bir dosyadır.
Bir Dockerfile, bir uygulamanın konteyner görüntüsünü (Docker Image) nasıl oluşturacağınızı ve yapılandıracağınızı tanımlar. Dockerfile, yapılacak işlemleri adımlar halinde belirler.
Dockerfile, uygulamanızın bağımlılıklarını, eklentilerini, ortam değişkenlerini ve sırasıyla çalıştırılacak komutları tanımlamanıza olanak tanır.
Dockerfile ile üç adımda konteyner çalıştırılabilir:
- Önce Dockerfile oluşturulur.
- Hazırlanan Dockerfile ile Docker Image build edilir.
- Docker Image çalıştırılarak Docker Container run edilir.
Örneğin, basit bir PHP ortamı için Dockerfile kullanarak bir Docker Image oluşturalım:
# Resmi PHP imajını kullan FROM php:8.2-apache # Gerekli PHP eklentilerini yükle RUN docker-php-ext-install mysqli pdo pdo_mysql # Apache'i etkinleştir RUN a2enmod rewrite # Çalışma dizini ayarla WORKDIR /var/www/html # Proje kodunu konteynere kopyala COPY . /var/www/html
Hazırladığımız Dockerfile ile konteyner görüntüsünü (Docker Image) oluşturmak için aşağıdaki satırı Dockerfile’ın bulunduğu dizinde terminal aracılığıyla çalıştırın:
docker build -t my_php_image .
my_php_image ismiyle bir konteyner görüntüsü (Docker Image) oluşturduk. Aşağıdaki komut ile, oluşturulan tüm imajları listeleyebilirsiniz:
docker images
Hazırladığımız Docker Image üzerinden my_php_container ismini verdiğimiz konteynerimizi başlatabiliriz:
docker run -d -p 8080:80 --name my_php_container my_php_image
Tarayıcıdan http://localhost:8080/ adresine giderek index.php dosyasını görüntüleyebilirsiniz. Bu arada, Port Mapping işlemi ile apache default portunu (80), 8080 portuna yönlendirdik.
Docker Container İçerisinde Geliştirme (Mount Volumes)
Live code reloading özelliğini etkinleştirmek ve değişikliklerinizi konteynerin dışında sürdürmek için local bir dizini konteynere monte ederek kod değişikliklerinizi konteynerin içinde hemen görünür hale getirebilirsiniz. -v local_dizin:/var/www/html
docker run -d -p 8080:80 -v .:/var/www/html --name my_php_container my_php_image
Temizlik
Geliştirme çalışmanız bittiğinde, konteyneri durdurabilir ve kaldırabilirsiniz.
docker stop my_php_container docker rm my_php_container
Artık ihtiyacınız yoksa Docker Image’i de kaldırabilirsiniz
docker rmi my_php_image