2017-09-01 12 views
0

試してみるユースケースは、起動後にpostgresデータベースを初期化する方法です。私はopenshiftポッドライフサイクルでpostスタートフックを見ました。私はhere-documentを使用してSQLステートメントを置くことはできませんまたはコマンドライン(最大長の問題のためにDockerコマンドが失敗します)。ポッドのポストライフサイクルフックにボリュームを接続するにはどうすればいいですか?

のでpsqlコマンドがそれを実行できるように、ConfigMap経由でファイルにSQL文を保存し、それを開始する前にpostコンテナにアタッチするためのオプションを探して。私は公式文書からDeploymentConfigの巻を添付する方法を見ることができませんでした。私はそれを行うことができる方法はありますか?

ドキュメントは、私が言及 - openshift-doc

+0

あなたはコマンドが展開後execNewPodフックで使用するにはあまりにも長かったと言っているを行うことができますので、その後、またライフサイクルポッド内部にアクセス可能ですか? – luciddreamz

+0

@luciddreamzはい。これは、 'psql'コマンドに関する文書をすべてここに入れているホエーが起こったときです。ですから、SQL文を(Configmapを介して)ファイルに入れて、 'psql'を使ってSQL文を実行しようとしています。ポストライフサイクルポッドでそのファイルを利用できるようにすることは、私が直面している問題です。 –

答えて

0

私はpostライフサイクルポッドへの長いSQL文を渡すために、回避策を見つけました。

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';... 
関連する問題