हां तुम यह कर सकते हो।
इस दृश्य को लागू करने के लिए उपयोग करें exec
और env
आदेश दें।
डॉकटर में टेस्ट फिक्सचर
docker run -it --rm alpine:3.10
कंटेनर में कमांड चलाएँ:
exec env spring.application_name=happy-variable-name ${SHELL:-/bin/sh}
पर्यावरण चर सत्यापित करें:
HOSTNAME=bd0bccfdc53b
SHLVL=2
HOME=/root
spring.application_name=happy-variable-name
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
उपयोग ps aux
PID को सत्यापित करने के लिए नहीं बदला गया
PID USER TIME COMMAND
1 root 0:00 /bin/sh
12 root 0:00 ps aux
python
Environemnt चर को सत्यापित करने के लिए उपयोग करें
apk add python
python -c 'import os; print(os.environ["spring.application_name"])'
OUTPUT है happy-variable-name
।
क्या हुआ?
- शेल कॉल बिलिन निष्पादन
- शेल बिल्डिन निष्पादित कॉल syscall.exec वर्तमान शेल को बदलने के लिए प्रक्रिया 'env' बनाता है
- env प्रक्रिया कॉल syscall.execvp, env प्रक्रिया को बदलने के लिए '/ bin / sh' प्रक्रिया बनाती है
दूसरा रास्ता
यदि आप docker का उपयोग कर रहे हैं, तो आप Dockerfile में वैरिएबल सेट कर सकते हैं
FROM busybox
ENV xx.f%^&*()$#ff=1234
यदि आप kubernetes का उपयोग कर रहे हैं, तो आप configMap द्वारा चर सेट कर सकते हैं
test.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: foo-config
data:
"xx.ff-bar": "1234"
---
apiVersion: v1
kind: Pod
metadata:
name: foobar
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom:
- configMapRef:
name: foo-config
restartPolicy: Never
फली परोसें kubectl apply -f test.yaml
kubectl logs foobar
आउटपुट सत्यापित करें :
xx.ff-bar=1234
विन्यास मानचित्र '-', '_' या '' की अनुमति देता है।
-D
कमांड लाइन विकल्प के साथ घोषित ) से खुश है , इसलिए यह अब काम करता है। जाहिर है कि कार्यक्रम मुझे बताए बिना दोनों चर सेट में दिखता है। लेकिन फिर भी मैं उत्सुक हूं कि किस पर्यावरण चर नाम की अनुमति है।