有一个类似的问题在这里,但我想我想不同的事情。对于那些熟悉docker-compose的人来说,有一个出色的命令可以在容器中运行一次命令,这对于在每次部署之前启动迁移都非常有帮助:
docker-compose -f docker-compose.prod.yml run web npm run migrate
同样因为这是一个单行命令,所以可以轻松实现自动化:就像使用Makefile或ansible / chef / saltstack。
我唯一发现的是kubectl run
与相似docker run
。但是docker-compose run
允许我们使用配置文件,而docker-run不这样做:
kubectl run rp2migrate --command -- npm run migrate
这可能会起作用,但是我需要列出20个环境变量,并且确实不想在命令行中执行此操作。相反,我想传递一个标志来指定yaml config,如下所示:
kubectl run rp2migrate -f k8s/rp2/rp2-deployment.yaml --command -- npm run migrate
编辑:
Kubernetes也得到了init containers
作为测试功能(截至目前) - http://kubernetes.io/docs/user-guide/production-pods/#handling-initialization
您可能应该利用Kubernetes PostStart挂钩。如下所示:
lifecycle:
postStart:
exec:
command:
- "npm"
- "run"
- "migrate"
http://kubernetes.io/docs/user-guide/container-environment/
为您的Pod指定的环境变量也将可用:
此外,容器中还可以使用pod定义中的用户定义环境变量,以及在Docker映像中静态指定的任何环境变量
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句