Docker compose dosyası içerisindeki şifreleri güvende tutmak için farklı yöntemler kullanılabilir.
-.env dosyası oluşturup, değişkenler ile compose dosyasında çağırmak.
-docker swarm kullanımı.
Örneğimizde docker swarm kullanarak bu işlemi nasıl yapacağımızı örnekleyelim.
Docker swarm: Docker tarafından geliştirilmiş, konteynır yönetim ve orkestrasyon aracıdır.
Docker secret: Konteynırların çalışması için gerekli şifre vb verilerin güvenli bir şekilde depolanması için kullanılan bir özelliktir.
Docker ile çalışan, büyüyen yapılarda şifreleri compose dosyasında barındırmak doğru olmadığı gibi, bir secret oluşturup hangi servisler oluşturulan secret’a bağlanmalı, erişebilmeli mantığıyla ilerlersek daha doğru bir yapı oluşturmuş oluruz.
Şimdi bir mariadb veritabanını, mysql root ve mysql user şifrelerini barındıran bir secret oluşturarak ayaklandıralım.
echo “belirlediginizpassword” | docker secret create mysql_root_password
echo “belirlediginizpassword” | docker secret create mysql_user_password
-> Komutu ile secret’ larımızı oluşturalım. Oluşturduğumuz secret’ları portainer da da görüntüleyebilirsiniz.

Aşağıdaki compose file ile yapımızı swarm modda ayağa kaldırabiliriz.
version: ‘3.8’
services:
mariadb:
image: mariadb:10.11
ports:
– “3306:3306”
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root_password
MYSQL_DATABASE: database_name
MYSQL_USER: user_name
MYSQL_PASSWORD_FILE: /run/secrets/mysql_user_password
volumes:
– mariadb_data:/var/lib/mysql
secrets:
– mysql_root_password
– mysql_user_password
secrets:
mysql_root_password:
external: true
mysql_user_password:
external: true
volumes:
mariadb_data:
Aşağıdaki komutu çalıştırdığımızda yapımız hazır hale gelecektir.
docker stack deploy -c .\docker-compose.yml mariadb_example_stack
Oluşturmuş olduğumuz stack içerisinde, oluşturduğumuz secret’ ları kullanacak bir mariadb’yi servis olarak ayaklandırmış olduk.

password dosyalarının secret üzerinden alındığını ekran görüntüsünde görebilmekteyiz.
Faydalı Olması Dileklerimle,