Cara Membuat Environment Variable di Docker
Docker mengenal adanya environment variables untuk menyimpan variable konfigurasi, memisahkannya dari aplikasi. Misalnya, menyimpan informasi nama database, username, dan password.
Cara Pertama: Memakai opsi -env, -e
Pada saat membuat container, environment variable dapat langsung didefinisikan dengan memakai opsi -env atau -e.
Membuat dan menjalankan container dengan myapp dari image python, didefinisikan juga tigas environment variable sekaligus yaitu DB_NAME, DB_USER, dan DB_PASS.
1 | docker run -t -d -e DB_NAME=mydb -e DB_USER=myuser -e DB_PASS=mypass --name myapp python |
Menampilkan informasi detail container dengan inspect. Mengecek apakah environment variable yang didefinisikan ada di dalam container.
1 | docker inspect myapp | more |
Potongan informasi dari inspect, terdapat Env dan nama environment variable yang dibuat.
1 2 3 4 5 6 | ... "Env": [ "DB_NAME=mydb", "DB_USER=myuser", "DB_PASS=mypass", ... |
Cara lain mengecek environment variable dengan menjalankan perintah env di container.
1 | docker exec -t myapp env |
Contoh hasil perintahnya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=eaef0e69ab1c TERM=xterm DB_NAME=mydb DB_USER=myuser DB_PASS=mypass LANG=C.UTF-8 GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D PYTHON_VERSION=3.10.0 PYTHON_PIP_VERSION=21.2.4 PYTHON_SETUPTOOLS_VERSION=57.5.0 PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/d781367b97acf0ece7e9e304bf281e99b618bf10/public/get-pip.py PYTHON_GET_PIP_SHA256=01249aa3e58ffb3e1686b7141b4e9aac4d398ef4ac3012ed9dff8dd9f685ffe0 HOME=/root |
Contoh script Python membaca environment variable, myenv.py
1 2 3 4 5 6 7 8 9 | import os database = os.environ['DB_NAME'] username = os.environ['DB_USER'] password = os.environ['DB_PASS'] print("database: %s" % database) print("username: %s" % username) print("password: %s" % password) |
Copy file myenv.py ke container.
1 | docker cp myenv.py myapp:/ |
Jalankan script myenv.py.
1 | docker exec -t myapp python myenv.py |
Hasilnya.
1 2 3 | database: mydb username: myuser password: mypass |
Cara Kedua: Memakai opsi –env-file
Environment variable dapat disimpan di dalam file terlebih dahulu yang kemudian akan dipanggil saat membuat container.
Misalnya membuat file dengan nama myenv.txt.
1 | nano myenv.txt |
Lalu masukkan environment variable.
1 2 3 | DB_NAME=mydb DB_USER=myuser DB_PASS=mypass |
Membuat container dengan menyertakan environment variable file.
1 | docker run -t -d --env-file myenv.txt --name myapp python |
Cara Ketiga: Memakai Docker Compose
Docker Compose adalah Docker tool untuk menjalankan aplikasi yang membutuhkan banyak container. Misalnya, WordPress membutuhkan container MySQL dan container WordPress.
Contoh potongan file docker-compose.yml, terdapat environment variables MySQL.
1 2 3 4 5 6 7 8 9 10 11 12 13 | ... 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 ... |
Selamat mencoba 🙂