2017-09-01 39 views
0

试用的用例是,启动后初始化postgres数据库的方法。我在openshift pod生命周期中看到post开始挂钩。我无法使用here-document或在命令行中输入sql语句(由于最大长度问题,Docker命令失败)。如何将音量附加到pod的后期开始生命周期挂钩?

所以寻找一个选项,通过ConfigMap保存SQL语句在一个文件中,并开始之前附加到post容器,使psql命令可以执行它。我看不到从官方文档的DeploymentConfig附加卷的方法。有什么办法可以做到吗?

文件我称之为 - openshift-doc

+0

您是说这些命令太长而无法在后期部署execNewPod挂钩中使用? – luciddreamz

+0

@luciddreamz是的。这就是我在这里把所有文件放在'psql'命令中的情况。所以现在试图把SQL语句放在一个文件中(通过Configmap)并使用'psql'来执行它。将该文件提供给后期生命周期吊舱是我面临的问题。 –

回答

0

我找到了一个解决办法,以度过漫漫SQL语句来post生命周期吊舱。

设置DeploymentConfig ENV变量中的SQL语句。这些ENV变量也可以在生命周期模块内部访问,所以我们可以轻松地执行下列命令:

post: 
    failurePolicy: Abort 
    execNewPod: 
     command: 
     - /bin/bash 
     - '-c' 
     - >- 
      echo $INIT_SQL_STATEMENTS | psql "sslmode=allow 
      host=postgres user=postgres password=postgres" 
     containerName: postgres 

    ..... 

     env: 
     - name: POSTGRESQL_ADMIN_PASSWORD 
      value: postgres 
     - name: INIT_SQL_STATEMENTS 
      value: >- 
      create user haridas with encrypted password 'haridas';...