EVET, BUNU YAPABİLİRSİN.
Bu sahneyi uygulamak için kullanın exec
ve env
komut verin.
Docker'da Test Fikstürü
docker run -it --rm alpine:3.10
Kapta komut çalıştır:
exec env spring.application_name=happy-variable-name ${SHELL:-/bin/sh}
Ortam değişkenlerini doğrulayın:
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'nin değişmediğini doğrulamak için kullanın
PID USER TIME COMMAND
1 root 0:00 /bin/sh
12 root 0:00 ps aux
python
Ortam değişkenini doğrulamak için kullanın
apk add python
python -c 'import os; print(os.environ["spring.application_name"])'
ÇIKTI happy-variable-name
.
Ne oluyor?
- Shell çağrı yerleşik yürütme
- Kabuk yerleşik exec çağrısı syscall.exec oluşturma işlemi 'env' geçerli kabuk yerine
- env süreç çağrı enys işlemi yerine syscall.execvp oluşturma işlemi '/ bin / sh'
Diğer yol
Docker kullanıyorsanız, Dockerfile'da değişken ayarlayabilirsiniz
FROM busybox
ENV xx.f%^&*()$#ff=1234
- Kubernetes yapılandırması
Kubernetes kullanıyorsanız, ConfigMap ile değişken ayarlayabilirsiniz
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
Bölmeyi dağıt kubectl apply -f test.yaml
kubectl logs foobar
Çıktıyı doğrulayın :
xx.ff-bar=1234
ConfigMap '-', '_' veya '' izin verir.
-D
komut satırı seçeneği ile bildirildi) mutlu olduğunu buldum , bu yüzden şimdi çalışıyor. Açıkçası program bana söylemeden her iki değişken kümesinde de görünüyor. Ama yine de hangi ortam değişkeni adlarına izin verildiğini merak ediyorum.