Permasalahan Utama
Di salah satu project nodejs, saya bisa menggunakan ENVIRONMENT untuk “meng-inject” ENVIRONMENT variabel lewat docker-compose.
Saat ada update ENVIRONMENT harusnya, docker stack deploy -c docker-compose.yml namaservice
saja sudah cukup, tapi ternyata tidak…
Hal itu ternyata berlaku hanya untuk container yang sedang berjalan (busy), sedangkan yang idle malah tidak terupdate sama sekali ENVIRONMENT nya.
Contoh Sederhana
Saya punya sebuah image docker project nodejs yang ENVIRONMENT nya bisa ditambahkan lewat docker-compose file
version: "3.7"
services:
nodejs:
image: ghcr.io/ipang/nodejs
environment:
#saya tambahkan 1 environment via docker-compose
IS_MAINTENANCE: "true"

Hasil ‘docker service inspect service’
Akan saya keluarkan dari mode maintenance dengan mengganti “true” ke “false”
version: "3.7"
services:
nodejs:
image: ghcr.io/ipang/nodejs
environment:
#saya tambahkan 1 environment via docker-compose
IS_MAINTENANCE: "false"
Solusi
- Untuk memperbaharui ENVIRONMENT di dalam container, jalankan
docker stack deploy -c docker-compose.yml namaservice
- Jalankan juga ini untuk “memaksa” container dalam docker-swarm memperbaharui ENVIRONMENT
docker service update --force --update-delay=10s --update-parallelism=1 namaservice