J'ai une application de démarrage à ressort avec deux profils, Dev et Prod, mon fichier Docker est le suivant:
containers:
- name: myapp
image: myregistry.azurecr.io/myapp:0.1.7
imagePullPolicy: "Always"
ports:
- containerPort: 8080
name: myapp
readinessProbe:
httpGet:
path: /actuator/health
port: 8080
timeoutSeconds: 3
periodSeconds: 20
failureThreshold: 3
4 Réponses :
Vous pouvez remplacer une image code> d'une image code> à l'aide de la commande code> code> d'une spécification KubeNettes POD. De même, vous pouvez remplacer alternativement, pour fournir un niveau d'abstraction plus élevé, vous pouvez écrire votre propre script d'entrée qui lit le profil d'application à partir d'une variable d'environnement: p> alors, vous pouvez simplement transmettre cette variable d'environnement dans votre POD: P> cmd code> à l'aide de la propriété args code> (voir aussi La documentation ): containers:
- name: myapp
image: myregistry.azurecr.io/myapp:0.1.7
imagePullPolicy: "Always"
env:
- name: APPLICATION_CONTEXT
value: prod
ports:
- containerPort: 8080
name: myapp
Plutôt plutôt que de mettre Utiliser configmaps et Application.Property . P> Votre point d'entrée dans DockerFile devrait ressembler à: p> printemps.profiles.active code> dans dockerfile dans le point d'entrée. containers:
- name: myapp
image: myregistry.azurecr.io/myapp:0.1.7
imagePullPolicy: "Always"
command: ["java","-cp","app:app/lib/*","com.my.Application","--spring.config.additional-location=/config/application-dev.properties"]
ports:
- containerPort: 8080
name: myapp
volumeMounts:
- name: myapp-application-config
mountPath: "/config"
readOnly: true
volumes:
- name: myapp-application-config
configMap:
name: myapp-config
items:
- key: application-dev.properties
path: application-dev.properties
readinessProbe:
httpGet:
path: /actuator/health
port: 8080
timeoutSeconds: 3
periodSeconds: 20
failureThreshold: 3
Il y a beaucoup Plusieurs manières pour définir des valeurs de configuration à ressort. Avec Certaines règles , vous pouvez utiliser des variables d'environnement ordinaires pour spécifier des valeurs de propriété individuelles. Vous pouvez voir si vous pouvez l'utiliser au lieu d'avoir un contrôle de profil de ressort distinct.
Utilisation de variables d'environnement comporte deux avantages ici: cela signifie que vous (ou votre équipe Devops) peut modifier les paramètres de déploiement sans recompiler l'application; et si vous utilisez un gestionnaire de déploiement comme Helm où certains détails tels que les noms d'hôte sont intrinsèquement imprévisibles, cela vous permet de spécifier des valeurs qui ne peut pas être connu avant de déployer du temps. p>
Par exemple, disons que vous avez une dépendance REDIS: P>
containers:
- name: myapp
env:
- name: CACHE_REDIS_URL
value: "redis://myapp-redis.default.svc.cluster.local:6379/0"
Un moyen de le faire consiste à utiliser Vous pouvez définir vos profils dans une configmap comme ci-dessous P> apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-name
labels:
app: deployment-name
spec:
replicas: 1
selector:
matchLabels:
app: deployment-name
template:
metadata:
labels:
app: deployment-name
spec:
containers:
- name: container-name
image: your-image
env:
- name: SPRING_PROFILES_ACTIVE
value: "development"