Containerda .env kullanımı

Merhabalar,

Nodejs ile bir rest api yazdım. Bu rest api container haline getirip çalışmak istiyorum fakat user, pass gibi bilgileri .env dosyasında saklıyorum. Docker kullanmadan önce sunucuya bağlanıp .env dosyasını oluşturuyorduk fakat bunu Docker swarm üzerinde en sağlıklı ve en doğru şekilde nasıl yapabilirim?

Aklıma gelen yöntemler şunlardı;

1- container oluştururken ilgili çevre değişkenleri “-e” ile belirtebilirim ama uygulama içerisinde sadece user-pass yok birden fazla şey var. Bu yüzden bunu pas geçtim.
2- Dockerfile ile container’ı oluştururken .env dosyası ile private şekilde registry’e göndermek. (ne kadar doğru bunu bilemedim)

Teşekkürler

Docker swarm üstünde bu tarz sensitive verileri enviroment variable olarak değil de secret olarak yönetmeniz daha doğru olacaktır Manage sensitive data with Docker secrets | Docker Documentation

1 Beğeni

@ozgurozturknet

İnceledim sanırım secret ile tek tek belirtiyoruz key-value değerlerini.
Toplu şekilde .env dosyası içerisindeki tüm key-value’leri yazmanın bir yöntemi var mı hocam? yoksa tek tek serverda önceden belirtmem mi gerekiyor?

Ek olarak; nodejs içerisinde -e verilerini process.env.ENVNAME şeklinde alıyordum. Secret kullanırken de bu şekilde mi alacağım hocam?

Evet secretlari tek tek yaratacaksiniz. Sonrasında bu yarattığınız secretlari yaml tanımınizda servicesinize ekleyebilirsiniz. Sonrasında her bir secret, adi secretin adi şeklinde bir dosya olarak /run/secrets folderinda bulunacak. Bu dosyaların içeriği ise sizin erişmek istediğiniz değer olacak. Örneğin mypassword diye bir secret, değeri de 123456 olacak şekilde yaratirsaniz, bunu servise eklediğiniz zaman container içinde /run/secrets folderinda mypassword diye bir dosya olacak, bu dosyanın içeriği de 123456 olacak. Sizin uygulamanız buraya bakarak bu değeri okuyabilir. Bu okuma kısmını ya uygulama içerisinde programatik şekilde halledeceksiniz ya da container çalıştığında çalışacak bir script yazıp bu scriptin bu değeri okuyup enviroment variable olarak sistemde tanimlanmasini saglayacaksiniz. Bu sayede kodda değişiklik yapmaniza da gerek kalmaz.

2 Beğeni