Kubernetes集群和Phoenix - 自动化`mix ecto.migrate`?

时间:2017-05-29 00:26:05

标签: elixir kubernetes gitlab phoenix-framework

我正在将我的Phoenix应用程序推送到Kubernetes集群进行审核。我使用GitLab为Web服务器创建服务,为临时postgres pod创建另一项服务。

我想做的是自动mix ecto.createmix ecto.migrate。但是,有一个时间问题 - postgres服务器还没有准备好的时间很短。

在创建Web应用程序服务之前,我可以在部署脚本中轮询postgres服务。但这是最实用的方法吗?

1 个答案:

答案 0 :(得分:2)

Kubernetes有一些名为init containers的东西可以帮到你。

从文档中,这是一个等待dB容器的app容器的示例。

apiVersion: v1 
kind: Pod 
metadata: 
  name: myapp-pod 
  labels: 
    app: myapp 
spec: 
  containers: 
  - name: myapp-container 
    image: busybox 
    command: ['sh', '-c', 'echo The app is running! && sleep 3600'] 
  initContainers: 
  - name: init-myservice 
    image: busybox 
    command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;'] 
  - name: init-mydb 
    image: busybox 
    command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']