Cara Membuat dan Mengelola Environment Variable di Docker

Cara Install Docker di Ubuntu 20.04 LTS (Lengkap untuk DevOps dan Server Production)

Environment variable di Docker digunakan untuk menyimpan konfigurasi aplikasi secara terpisah dari source code. Pendekatan ini merupakan praktik standar dalam DevOps karena meningkatkan keamanan, fleksibilitas deployment, dan kemudahan maintenance.

Contoh penggunaan environment variable meliputi penyimpanan nama database, username, password, API key, dan konfigurasi aplikasi lainnya tanpa perlu hardcode di dalam aplikasi.

Artikel ini membahas tiga metode utama dalam membuat environment variable di Docker, yaitu menggunakan parameter langsung, file environment, dan Docker Compose.

Apa Itu Environment Variable di Docker

Environment variable adalah variabel sistem yang tersedia di dalam container dan dapat diakses oleh aplikasi yang berjalan di dalamnya. Docker memungkinkan environment variable didefinisikan saat container dibuat, sehingga konfigurasi dapat disesuaikan untuk setiap environment seperti development, staging, atau production.

Keuntungan utama penggunaan environment variable di Docker antara lain:

  • Memisahkan konfigurasi dari aplikasi

  • Meningkatkan keamanan data sensitif

  • Memudahkan automasi dan CI/CD

  • Mendukung deployment multi-environment

Cara Pertama: Menggunakan Opsi -e atau --env

Cara paling sederhana untuk membuat environment variable adalah dengan mendefinisikannya langsung saat menjalankan container menggunakan parameter -e atau --env.

Menjalankan Container dengan Environment Variable

Contoh berikut menjalankan container bernama myapp dari image Python dengan tiga environment variable:

docker run -t -d \ -e DB_NAME=mydb \ -e DB_USER=myuser \ -e DB_PASS=mypass \ --name myapp python

Pada contoh di atas, environment variable DB_NAME, DB_USER, dan DB_PASS langsung tersedia di dalam container.

Mengecek Environment Variable di Container

Untuk memastikan environment variable berhasil dibuat, gunakan perintah inspect:

docker inspect myapp | more

Pada output inspect, akan terlihat bagian Env seperti berikut:

"Env": [ "DB_NAME=mydb", "DB_USER=myuser", "DB_PASS=mypass" ]

Cara lain yang lebih praktis adalah dengan menjalankan perintah env langsung di dalam container:

docker exec -t myapp env

Hasilnya akan menampilkan seluruh environment variable yang tersedia di container, termasuk variabel yang dibuat secara custom.

Membaca Environment Variable di Aplikasi

Berikut contoh script Python sederhana untuk membaca environment variable dari dalam container.

Contoh Script Python

Buat file myenv.py:

import os database = os.environ['DB_NAME'] username = os.environ['DB_USER'] password = os.environ['DB_PASS'] print("database:", database) print("username:", username) print("password:", password)

Salin file tersebut ke dalam container:

docker cp myenv.py myapp:/

Jalankan script di dalam container:

docker exec -t myapp python myenv.py

Jika konfigurasi benar, output akan menampilkan nilai environment variable sesuai yang didefinisikan.

Cara Kedua: Menggunakan Opsi --env-file

Untuk konfigurasi yang lebih rapi dan terstruktur, environment variable dapat disimpan dalam sebuah file. Metode ini sangat direkomendasikan untuk environment production.

Membuat File Environment

Buat file dengan nama myenv.txt:

nano myenv.txt

Isi file dengan environment variable:

DB_NAME=mydb DB_USER=myuser DB_PASS=mypass

Menjalankan Container dengan Env File

Gunakan parameter --env-file saat membuat container:

docker run -t -d --env-file myenv.txt --name myapp python

Dengan metode ini, konfigurasi menjadi lebih terpusat dan mudah dikelola, terutama jika jumlah environment variable cukup banyak.

Cara Ketiga: Menggunakan Docker Compose

Docker Compose digunakan untuk menjalankan aplikasi yang terdiri dari banyak container. Environment variable di Docker Compose biasanya didefinisikan langsung di dalam file docker-compose.yml.

Contoh Environment Variable di Docker Compose

Berikut contoh potongan konfigurasi Docker Compose untuk container database MySQL:

services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress

Dengan konfigurasi ini, Docker Compose akan otomatis menyuntikkan environment variable ke dalam container database saat dijalankan.

Best Practice Penggunaan Environment Variable di Docker

Untuk penggunaan profesional dan production environment, beberapa praktik terbaik yang direkomendasikan antara lain:

  • Hindari menyimpan password langsung di source code

  • Gunakan file .env atau secret manager untuk data sensitif

  • Pisahkan konfigurasi untuk setiap environment

  • Kombinasikan dengan CI/CD untuk automasi deployment

Kesimpulan

Environment variable merupakan komponen penting dalam arsitektur aplikasi berbasis Docker. Dengan memanfaatkan environment variable, konfigurasi aplikasi menjadi lebih aman, fleksibel, dan mudah dikelola.

Docker menyediakan beberapa metode untuk mendefinisikan environment variable, mulai dari parameter langsung, file environment, hingga Docker Compose. Pemilihan metode dapat disesuaikan dengan skala aplikasi dan kebutuhan operasional.

Pendekatan ini sangat direkomendasikan dalam workflow DevOps modern dan lingkungan produksi.