Ketersediaan variabel lingkungan di dalam file penulisan disediakan dari berikut ini:
terasa tidak konsisten. Vars lingkungan dengan nilai default tidak tersedia di dalam penulisan kecuali secara eksplisit disediakan dari luarnya.
Pertimbangkan file penulisan minimal berikut:
version: '3'
services:
example:
environment:
TAG: edge
image: alpine:${TAG}
Variabel ${TAG}
tidak tersedia _anywhere_ di dalam file penulisan.
Misalnya:
$ docker-compose up
WARNING: The TAG variable is not set. Defaulting to a blank string.
Pulling example (alpine:latest)...
...
Tetapi:
$ TAG=edge docker-compose up
Pulling example (alpine:edge)...
...
$TAG sekarang tersedia di dalam file penulisan.
Diperlukan untuk selalu secara eksplisit memberikan nilai variabel env untuk dapat menggunakannya di dalam file penulisan.
Rasanya wajar untuk mengharapkan bahwa semua variabel env tersedia/diselesaikan di dalam file penulisan, terutama yang ditentukan olehnya sejak awal. Meskipun hal ini tampaknya tidak terjadi.
Maaf jika ini dijawab sebelumnya, saya tidak menemukan kasus penggunaan khusus ini dalam daftar masalah.
$ docker version
Client:
Version: 1.13.1
API version: 1.26
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 08:47:51 2017
OS/Arch: darwin/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 08:47:51 2017
OS/Arch: linux/amd64
Experimental: true
$ docker-compose version
docker-compose version 1.11.1, build 7c5d5e4
docker-py version: 2.0.2
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2j 26 Sep 2016
Silakan merujuk ke halaman disambiguasi: https://docs.docker.com/compose/environment-variables/
Singkatnya, entri environment
dalam file penulisan Anda mendeklarasikan variabel lingkungan yang akan tersedia di dalam wadah/layanan Anda saat runtime. Substitusi variabel di sisi lain dilakukan dengan menggunakan variabel yang ada di host tempat docker-compose
dieksekusi. Itu adalah dua set yang berbeda dan harus tetap terpisah.
Terimakasih atas klarifikasinya!
Saya mengalami masalah yang sama sekarang tetapi saya tidak dapat memperbaikinya. Saya memiliki skrip Shell yang membungkus panggilan docker-compose:
...
docker-compose $DOCKER_COMPOSE_FILES up $@
...
DOCKER_COMPOSE_FILES adalah string dengan "-f file1.yml -f file2.yml ...". Ini semua bekerja dengan baik.
Entri gambar komposisi buruh pelabuhan saya adalah:
...
image: "...-service:${DOCKER_TAG}"
...
Saya mencoba beberapa cara:
DOCKER_TAG=... docker-compose...
Tidak ada yang berhasil - DOCKER_TAG tidak tersedia. Apakah seseorang tahu apa yang saya lakukan salah?
Komentar yang paling membantu
Silakan merujuk ke halaman disambiguasi: https://docs.docker.com/compose/environment-variables/
Singkatnya, entri
environment
dalam file penulisan Anda mendeklarasikan variabel lingkungan yang akan tersedia di dalam wadah/layanan Anda saat runtime. Substitusi variabel di sisi lain dilakukan dengan menggunakan variabel yang ada di host tempatdocker-compose
dieksekusi. Itu adalah dua set yang berbeda dan harus tetap terpisah.