oracle dbに対する自動テストではsath89/oracle-12cを使用しています。 これはうまくいきますが、唯一の問題は、このコンテナが起動するまでに数分かかることです(ハードウェアによっては〜10-15)。 私はこのコンテナのヘルスチェックを考えました。bashコマンドをdocker(-compose)に設定する方法healthcheck
私はANONYMOUS
アカウントが画像のentrypoint
スクリプトの最後のステップである、ロックが解除されたときに0を返す
status=`su oracle -c "echo -e \"SELECT ACCOUNT_STATUS FROM DBA_USERS WHERE USERNAME = 'ANONYMOUS' AND ACCOUNT_STATUS = 'EXPIRED';\" | /u01/app/oracle/product/12.1.0/xe/bin/sqlplus -S/as sysdba | grep ACCOUNT_STATUS"`; if [ "$status" == "ACCOUNT_STATUS" ]; then true; else false; fi
を思い付くことをどうにか:entrypoint.sh。 私はdocker exec -it <containername> bash
を使ってこれをテストしました。
私は今、ドッキングウィンドウのためのヘルス・チェック・コマンドに(ドッカ-COMPOSEを)この恐ろしく長い行を変換して立ち往生しています:
すべてのヘルプは高く評価されversion: "2"
services:
db:
image: sath89/oracle-12c:r1
healthcheck:
test: ["CMD", "<command goes here>"]
interval: 10s
timeout: 3s
retries: 3
- あなたはコマンド自体を向上させることができれば、私は幸せですよここに。 Oracle(source)の検証クエリとして「select one from dual」を認識していますが、これは〜8分後に操作可能なDBを報告しますが、少し後に接続をリセットします。 私はコンテナ自体を変更したくないです - もしアップデートがあれば、それをハブから引き出したいだけです。
なぜコマンドをbashスクリプトに入れてイメージに追加しないのですか?あなたの質問に応じて、[docu](https://docs.docker.com/engine/reference/builder/#healthcheck)によると、コマンドは 'exec'で実行されるので、' bash'とスクリプトに 'test:[" CMD "、" bash "、" -c "、" "]'というスクリプトを付けてください。 –
fzgregor
'/ bin/sh'を使っているにもかかわらず、' docker-compose'にシェルを起動させることができたことが分かりました: 'test:[" CMD-SHELL "、" –
fzgregor
@fzgregor再び "CMD-SHELL"へのヒントをありがとう。私は自分自身を見つけたが、何とかそれを無視した。私はもう一度試してみて、それが有望に見える、実際に動作する場合、答えを投稿します。 – Martin