Docker Container Permission Sorunu Çözümü

Eğer container’larınızın ortak kullandıgı bir volume’e container’lar farklı user’lar ile dosya/klasör oluşturuyorsa, dosya izini sorunları yaşabilirsiniz.(permission denied)

Örneğin php-fpm image’ını kullandıgınızı varsayarsak, projenizi webten(php-fpm) çalıştırdığınızda dosyalar www-data kullanıcısına ait olacaktır. Eğer terminalden(php-cli) çalıştırırsanız dosyalar root kullanıcısına ait olacaktır.

Çözüm

Dockerfile’ınıza aşağıdaki satırı ekleyin.

USER www-data

Bu işlemi yaptığınızda container’ınıza docker exec ile gönderdiğiniz komutları www-data kullanıcısıyla çalıştıracaktır.

Örnek Senaryo

Symfony framework kullanıyorsanız aşağıdaki komutu çalıştırdığınızda projenizin cache’leri silinecek ve cache klasörünüze root kullanıcısına ait bazı dosyalar oluşacaktır.

docker exec php_prod php bin/console cache:clear

Daha sonra tarayıcınızda sitenizi açmaya çalıştığınızda php-fpm bu cache dosyalarına www-data kullanıcısıyla erişmeye çalışıp, bu kullanıcının yetkileri root kullanıcısının dosyaları okumaya veya yazmaya yetmediği için dosya izni hatası veya sonsuz döngü şeklinde sorunlarla karşılacaksınız.

Yukarıdaki çözümü uyguladığınızda cache dosyaları www-data kullanıcısı tarafından oluşturulduğu için yine aynı kullanıcı ile sorunsuz cache dosyalarınıza erişebileceksiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir