Eu tenho uma imagem personalizada do mysql. Quando executamos o contêiner, ele baixa um dump do mysql de nosso artifactory para carregar alguns dados. Tenho a seguinte verificação de integridade em meu comando docker run:
--health-cmd='mysql -u myusername -pMyPassword'
Mas o que eu quero fazer é definir a integridade do contêiner para íntegra quando os dados forem importados, o que geralmente leva cerca de 5 minutos. Uma ideia que tive é talvez definir uma variável de ambiente, mas, nesse caso, não saberia qual seria o cmd de saúde. Ou talvez haja uma maneira melhor de fazer isso?
Estou apenas começando com o docker, meu conhecimento é muito limitado.
Uma solução simples seria atualizar uma tabela especial (digamos status
) quando o carregamento estiver concluído. Em seguida, substitua o comando health-check por um bash
script
#!/usr/bin/env bash
# the table status is updated when the load finishes
SQLSTMT="SELECT status FROM myDatabase.status WHERE status='done'"
# execute the SQL script and get the result
STATUS=`mysql -AN -e "${SQLSTMT}"`
# return exit code 0 (container healthy) if status is done,
# otherwise exit code 1 (container is not healthy)
[ "$STATUS" == 'done' ]
o health-cmd
torna-se:
--health-cmd='/path/to/script.sh'
Deve funcionar mesmo se você criar a tabela após o término do processo de carregamento.
Outra opção é criar um novo arquivo (mesmo vazio) quando o carregamento terminar. O comando de saúde testará a presença do arquivo:
--health-cmd="/usr/bin/test -f /path/to/file"
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras