Kubernetes helm 使用&&;
Django应用程序运行迁移和收集静态文件的主要任务如下:Kubernetes helm 使用&&;,kubernetes-helm,Kubernetes Helm,Django应用程序运行迁移和收集静态文件的主要任务如下: apiVersion: batch/v1 kind: Job metadata: name: django-app-job labels: app.kubernetes.io/name: django-app-job helm.sh/chart: django-app app.kubernetes.io/instance: staging-admin app.kubernetes.io/manag
apiVersion: batch/v1
kind: Job
metadata:
name: django-app-job
labels:
app.kubernetes.io/name: django-app-job
helm.sh/chart: django-app
app.kubernetes.io/instance: staging-admin
app.kubernetes.io/managed-by: Tiller
annotations:
"helm.sh/hook": pre-install,pre-upgrade
"helm.sh/hook-weight": "1"
"helm.sh/hook-delete-policy": hook-succeeded,hook-failed
spec:
template:
metadata:
labels:
app.kubernetes.io/name: django-app-job
app.kubernetes.io/instance: foobar
spec:
restartPolicy: OnFailure
containers:
- name: django-app
command:
- "/bin/bash"
- "-c"
- "python3 ./manage.py migrate"
- "&&"
- "python3 ./manage.py collectstatic --noinput"
但这只执行migrate来更新DB模式,但它从未运行collect静态。即使迁移运行正常。作业不会失败,因为如果不失败,升级将失败,而这不会发生
但如果我将命令更改为:
containers:
- name: django-app
command:
- "/bin/bash"
- "-c"
- "python3 ./manage.py migrate && python3 ./manage.py collectstatic --noinput"
现在作业运行迁移和收集静态数据。这两个命令之间有什么区别 在较低的级别上,所有Unix命令实际上都是作为一个字序列执行的。通常,shell会将命令行拆分为单词,但在Kubernetes清单中,您必须一次手动指定一个单词 在您的示例中,只读取下一个单词,并将其作为命令执行,应用常规shell规则。如果命令碰巧使用了变量,如
$1
,则任何剩余的单词都将用作位置参数
您可以在本地shell中的Kubernetes之外演示这一点,使用引号强制shell按照您想要的方式分解单词:
#选项一
'/bin/sh'-c''echo foo''&&&''echo bar'
#打印“foo”
#选择二
“/bin/sh”“-c”“echo foo和echo bar”
#打印“foo”、“bar”
一个经常出现的技巧是在多行中编写一个字符串,给出一些看起来像shell脚本但实际上不是的东西
命令:['/bin/sh','-c']
args:>-
python3./manage.py迁移
&&
python3./manage.py collectstatic--noinput
在较低的级别上,所有Unix命令实际上都是作为一个字序列执行的。通常,shell会将命令行拆分为单词,但在Kubernetes清单中,您必须一次手动指定一个单词
在您的示例中,只读取下一个单词,并将其作为命令执行,应用常规shell规则。如果命令碰巧使用了变量,如$1
,则任何剩余的单词都将用作位置参数
您可以在本地shell中的Kubernetes之外演示这一点,使用引号强制shell按照您想要的方式分解单词:
#选项一
'/bin/sh'-c''echo foo''&&&''echo bar'
#打印“foo”
#选择二
“/bin/sh”“-c”“echo foo和echo bar”
#打印“foo”、“bar”
一个经常出现的技巧是在多行中编写一个字符串,给出一些看起来像shell脚本但实际上不是的东西
命令:['/bin/sh','-c']
args:>-
python3./manage.py迁移
&&
python3./manage.py collectstatic--noinput