News, Devops, Software, Tutorial

Belajar Docker Bagian 12

Eko Susilo Harjo October 5, 2024
docker part 12
docker part 12

Docker Compose mempermudah pengelolaan aplikasi multi-container dengan file konfigurasi yang jelas dan mudah diatur. Namun, ketika aplikasi Anda berkembang, kebutuhan akan pengelolaan variabel environment dan data sensitif menjadi semakin penting. Artikel ini akan membahas cara mengelola environment variables, menggunakan Docker Secrets untuk menyimpan data sensitif, dan konfigurasi lanjutan lainnya dalam Docker Compose.

Mengelola Environment Variables di Docker Compose

Environment variables (variabel lingkungan) memainkan peran penting dalam pengaturan aplikasi. Mereka memungkinkan Anda untuk mengelola konfigurasi tanpa harus memodifikasi image atau kode aplikasi. Misalnya, Anda dapat menentukan URL database, credential, atau port layanan dalam variabel lingkungan.

1. Menggunakan File .env dalam Docker Compose

File .env adalah tempat yang ideal untuk menyimpan environment variables secara terpisah dari file konfigurasi docker-compose.yml. Hal ini memudahkan pengaturan dan meningkatkan keamanan, karena variabel sensitif tidak langsung disertakan di dalam file konfigurasi.

Contoh file .env:

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=supersecretpassword

Di dalam file docker-compose.yml, Anda bisa memanggil variabel ini dengan menggunakan format ${VARIABEL}.

Contoh docker-compose.yml:

version: '3'
services:
  database:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}

Dengan cara ini, Anda dapat mengelola variabel environment di satu tempat, memisahkannya dari konfigurasi aplikasi utama.

2. Keuntungan Menggunakan .env File

  • Keterbacaan dan Kemudahan: Semua variabel dikumpulkan dalam satu file, sehingga mudah dibaca dan diedit.
  • Keamanan: Anda dapat menyimpan file .env di luar repository jika menggunakan git, mencegah bocornya data sensitif.

Tambahkan file .env ke dalam .gitignore agar tidak terupload ke repository Git.

.env

Menggunakan Docker Secrets untuk Menyimpan Data Sensitif

Selain environment variables, Docker juga menyediakan mekanisme yang lebih aman untuk menyimpan data sensitif seperti password, API key, atau sertifikat dengan menggunakan Docker Secrets. Docker Secrets bekerja dengan mengenkripsi data sensitif dan menyimpannya dengan aman di dalam container.

1. Apa Itu Docker Secrets?

Docker Secrets adalah fitur yang memungkinkan penyimpanan dan pengelolaan data sensitif dengan aman. Data ini tidak akan muncul di environment container atau di log, sehingga lebih sulit untuk diakses secara tidak sah.

2. Membuat dan Menggunakan Docker Secrets

Untuk menggunakan Docker Secrets, Anda perlu terlebih dahulu membuat secret di Docker. Berikut adalah contoh cara membuat secret untuk menyimpan password database:

echo "supersecretpassword" | docker secret create db_password -

Setelah secret dibuat, Anda bisa memasukkannya ke dalam docker-compose.yml dengan konfigurasi berikut:

version: '3.1'

services:
  database:
    image: mysql:5.7
    secrets:
      - db_password
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_password

secrets:
  db_password:
    external: true

Pada contoh ini, MYSQL_ROOT_PASSWORD diambil dari secret yang telah disimpan di /run/secrets/db_password. Docker akan secara otomatis menyiapkan file dengan data yang terenkripsi di direktori tersebut, dan aplikasi bisa menggunakannya tanpa mengekspos data sensitif ke lingkungan.

3. Keuntungan Menggunakan Docker Secrets

  • Keamanan: Data sensitif tidak akan tampil di variabel environment atau log.
  • Mudah Diakses: Secrets dapat diakses oleh container yang membutuhkan data tersebut tanpa tambahan konfigurasi yang rumit.

Advanced Configuration dalam Docker Compose

Selain mengelola environment variables dan secrets, Docker Compose juga menyediakan fitur konfigurasi lanjutan lainnya yang dapat meningkatkan performa dan keamanan aplikasi Anda. Berikut adalah beberapa contoh konfigurasi lanjutan yang dapat Anda gunakan.

1. Menggunakan Multiple Docker Compose Files

Anda bisa menggunakan beberapa file docker-compose.yml untuk memisahkan konfigurasi lingkungan yang berbeda, seperti development dan production. Hal ini memberikan fleksibilitas dalam pengelolaan aplikasi di berbagai lingkungan tanpa harus mengubah file utama.

Misalnya, Anda memiliki file docker-compose.yml untuk konfigurasi umum dan docker-compose.prod.yml untuk konfigurasi khusus produksi. Anda dapat menjalankan Docker Compose dengan kedua file ini:

bashCopy codedocker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

Dengan pendekatan ini, Anda bisa memiliki pengaturan khusus untuk lingkungan production (misalnya, menggunakan image yang dioptimalkan, atau database yang lebih besar) tanpa mengubah pengaturan development.

2. Mengelola Resource Limits

Untuk meningkatkan stabilitas aplikasi dan mencegah container menggunakan resource yang berlebihan, Anda dapat membatasi penggunaan resource seperti CPU dan memori.

Contoh membatasi resource di docker-compose.yml:

services:
  web:
    image: nginx
    deploy:
      resources:
        limits:
          cpus: "0.5"
          memory: "512M"

Dengan pengaturan ini, container web hanya akan menggunakan maksimal 50% dari satu CPU core dan 512 MB memori. Ini penting untuk menghindari overload pada host server ketika menjalankan banyak container sekaligus.

3. Memisahkan Data dengan Docker Volumes

Untuk data yang membutuhkan persistensi, seperti database atau file yang dihasilkan oleh aplikasi, Anda bisa menggunakan Docker Volumes. Volume memungkinkan Anda untuk menyimpan data yang tetap ada meskipun container dihentikan atau dihapus.

Contoh konfigurasi volume di docker-compose.yml:

services:
  database:
    image: postgres
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Dengan cara ini, data dari database akan disimpan di volume db_data, dan tetap aman meskipun container database dihentikan atau di-restart.

Kesimpulan

Docker Compose memungkinkan kita untuk melakukan pengelolaan aplikasi multi-container dengan mudah dan efisien. Dengan menggunakan env file dan Docker Secrets, Anda dapat mengelola konfigurasi dan data sensitif dengan aman dan terstruktur. Fitur advanced configuration seperti multiple Compose files dan resource limits juga membantu dalam pengelolaan aplikasi di berbagai lingkungan, baik untuk pengembangan maupun produksi. Implementasi best practices ini akan membantu Anda menjaga aplikasi tetap aman dan berjalan dengan performa optimal.


Discover more from teknologi now

Subscribe to get the latest posts sent to your email.

Polars adalah pustaka open-source untuk pemrosesan data yang ditulis dalam bahasa Rust, yang terkenal dengan efisiensi dan kecepatan. Polars dirancang untuk menangani analisis data secara paralel, memanfaatkan arsitektur modern komputer yang memiliki banyak inti CPU.

“Pelajari konsep Docker persistence dan teknik seperti Docker volumes, bind mounts, dan tmpfs untuk memastikan data tetap aman dan persisten dalam container. Dapatkan panduan lengkap di sini!”

AI dalam dunia fintech telah berkembang pesat, bukan sekadar teknologi baru yang tiba-tiba muncul. Teknologi ini telah lama digunakan untuk membantu pengambilan keputusan keuangan dan mendeteksi penipuan. Kini, AI dan subdomainnya, yaitu Machine Learning (ML), memberikan nilai tambah signifikan dalam berbagai aspek industri fintech. Apa saja manfaat utama teknologi ini bagi sektor keuangan dan perbankan? […]

Discover more from teknologi now

Subscribe now to keep reading and get access to the full archive.

Continue reading