توفر متغيرات البيئة داخل ملف الإنشاء مما يلي:
يشعر بعدم الاتساق. لا تتوفر متغيرات البيئة ذات القيم الافتراضية داخل الإنشاء ما لم يتم توفيرها صراحةً من خارجها.
ضع في اعتبارك ملف الإنشاء الأدنى التالي:
version: '3'
services:
example:
environment:
TAG: edge
image: alpine:${TAG}
المتغير ${TAG}
غير متوفر _ في أي مكان_ داخل ملف الإنشاء.
على سبيل المثال:
$ docker-compose up
WARNING: The TAG variable is not set. Defaulting to a blank string.
Pulling example (alpine:latest)...
...
لكن:
$ TAG=edge docker-compose up
Pulling example (alpine:edge)...
...
$ TAG متاح الآن داخل ملف الإنشاء.
من الضروري دائمًا تقديم قيم متغيرة env بشكل صريح لتتمكن من استخدامها داخل ملف الإنشاء.
من الطبيعي أن نتوقع توفر / حل جميع متغيرات env داخل ملف الإنشاء ، خاصة تلك التي تم تحديدها بواسطته في المقام الأول. على الرغم من أن هذا لا يبدو أن هذا هو الحال.
آسف إذا تم الرد على هذا من قبل ، لم أجد حالة الاستخدام هذه في قائمة المشكلات.
$ 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
يرجى الرجوع إلى صفحة توضيح: https://docs.docker.com/compose/environment-variables/
باختصار ، يوضح الإدخال environment
في ملف الإنشاء متغيرات البيئة التي ستكون متاحة داخل الحاوية / الخدمة الخاصة بك في وقت التشغيل. من ناحية أخرى ، يتم استبدال المتغير باستخدام المتغيرات الموجودة على المضيف حيث يتم تنفيذ docker-compose
. هاتان مجموعتان مختلفتان ويجب أن تبقى منفصلة.
شكرا على التوضيح!
واجهت نفس المشكلة الآن ولكن لا يمكنني حلها. لدي برنامج نصي شل يقوم بتغليف استدعاء عامل إنشاء ميناء التحميل:
...
docker-compose $DOCKER_COMPOSE_FILES up $@
...
DOCKER_COMPOSE_FILES عبارة عن سلسلة تحتوي على "-f file1.yml -f file2.yml ...". كل شيء يعمل بشكل جيد.
إدخال صورة Docker-compose الخاص بي هو:
...
image: "...-service:${DOCKER_TAG}"
...
جربت عدة طرق:
DOCKER_TAG=... docker-compose...
لا شيء يعمل - DOCKER_TAG غير متاح. هل يعرف أحد ما أفعله خطأ؟
التعليق الأكثر فائدة
يرجى الرجوع إلى صفحة توضيح: https://docs.docker.com/compose/environment-variables/
باختصار ، يوضح الإدخال
environment
في ملف الإنشاء متغيرات البيئة التي ستكون متاحة داخل الحاوية / الخدمة الخاصة بك في وقت التشغيل. من ناحية أخرى ، يتم استبدال المتغير باستخدام المتغيرات الموجودة على المضيف حيث يتم تنفيذdocker-compose
. هاتان مجموعتان مختلفتان ويجب أن تبقى منفصلة.