Sie könnten den YAML Anker und Alias-Anlage für das verwenden, effektiv:
version: '2'
dummy: &deploy_template
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
services:
redis:
image: redis
ports:
- 6379:6379
deploy: *deploy_template
volumes:
- /srv/redis/data:/data
als analysiert werden, wenn Sie angegeben haben:
version: '2'
dummy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
services:
redis:
image: redis
ports:
- 6379:6379
deploy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
volumes:
- /srv/redis/data:/data
Sie multipe *deploy_template
Werte für einen einzelnen haben kann &deploy_template
Anker.
Das Problem ist jedoch, dass der Schlüssel dummy
und sein Wert docker-compose
auslösen, und zumindest in Version 2 gab es keinen Platz, um diese Informationen zu setzen.
ich vorverarbeiten deshalb meine docker-compose
Datei ruamel.dcw
(ich bin der Autor dieses Pakets) verwendet wird, die für eine user-data
Top-Level-Taste ermöglicht, die nicht in der Ausgabe angezeigt werden und wo man solche Ankerinformationen setzen kann. Beginnend mit:
version: '2'
user-data:
author: dthree <[email protected]>
description: redis container
env-defaults:
NAME: redis # default values if not specified in the environment
PORT: 6379
dummy:
- &deploy_template
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
- &some_other_template:
x: null
services:
redis:
image: ${NAME}
ports:
- "${PORT}:${PORT}"
deploy: *deploy_template
volumes:
- /srv/${NAME}/data:/data
dieses expandieren zu:
version: '2'
services:
redis:
image: ${NAME}
ports:
- ${PORT}:${PORT}
deploy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
volumes:
- /srv/${NAME}/data:/data
vor dem docker-compose
selbst Hand sein (die -f
Option). Alle Variablen im Abschnitt "env-defaults
", die nicht bereits in der Umgebung festgelegt sind, in der Sie den Präprozessor ausführen, erhalten ihren Standardwert, sodass sie leicht überschrieben werden können.
Als Nebenwirkung:
- 6379:6379
denn wenn die Portnummer unter 60 wird der alte YAML-Parser, die Andockfenster-komponieren Verwendungen, dass skalare als sexagesimal interpretiert: Sie sollten vorsichtig sein. Ich neige dazu, solche Werte immer anzugeben, besonders wenn man env verwendet. Variablen.