Execute um script de segundo plano dentro de um contêiner docker

5

No meu Dockerfile, eu corro um script:

RUN /bin/sh -c scripts/init.sh

Dentro de init.sh , todos os comandos terminados em & não são executados: não consigo executar processos em segundo plano. Alguma ideia do porquê?

    
por clemtoy 01.08.2016 / 19:17

2 respostas

0

Minha primeira ideia é criar serviços dentro do contêiner em vez de executá-los com nohup ou & , executá-los como serviço do sistema e você não precisa manipulá-los no init.sh.

Mas essa não é uma abordagem de docker "real". Se você precisar de mais de um serviço para ser executado, separe-os em diferentes contêineres (1 contêiner - 1 serviço) e coloque todos eles juntos com uma solução de compilação de encaixe.

    
por 18.08.2016 / 15:12
0

Eu tive o problema semelhante e algo como o seguinte me ajudou.

RUN nohup bash -c "scripts/init.sh &" && sleep 4

In many cases the server you started isn’t yet fully ready. To allow the server a bit more time to get ready add a sleep command. How large the argument sleep needs to depend on the service you start and you probably need to tweak it.

Leia mais neste documento

    
por 04.08.2018 / 08:22