2017-09-01 58 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';...