Isso ocorre em uma VM Ubuntu 14.04 LTS executando o Docker e suspeito que respawn
seja a causa do meu problema, mas não tenho certeza da solução ideal.
Script inicial recente ( cat /etc/init/dockersuitecrm.conf
)
description "Start docker containers"
author "Batman"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
end script
Isso 'funciona', pois myapp
é ativo e responsivo, mas /sbin/init
ocupa toda a CPU quando eu monitoro htop
. Se eu remover a entrada do upstart ( sudo rm /etc/init/dockersuitecrm.conf
) e executar manualmente o SSH e executar docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
, não vejo a cpu com 100% de problemas e, como antes, ela myapp
está novamente ativa e responsiva.
Portanto, desconfio que a maneira como estou começando a composição do docker acima está incorreta. Qual é o caminho certo para começar docker-compose
sempre funcionando sem intervenção manual?
EDIT: Não deve importar, mas /usr/bin/myapp -> /home/batman/dockerapps/myapp
como um link simbólico.
respawn
comando no script.docker-compose start
.script
bloco. Talvez isso faça parte do problema? Eu tenhochdir /usr/bin/myapp/
e na próxima linha em seuexec docker-compose up
lugar.docker-compose up -d
Respostas:
Basta usar o crontab, em vez de usar um intervalo de tempo, basta dizer @reboot
Portanto, faça o login como o usuário que deve iniciar esse script e digite o comando
e depois insira
Reinicie o sistema e veja se funciona. Há uma vantagem sobre o iniciante, mesmo que seja iniciado um pouco mais tarde, você não precisa se preocupar muito com dependências como rede, etc., para já estar pronto.
fonte
Supondo que você esteja usando a versão 2 das definições do Docker Compose
docker-compose.yml
, você pode fazer o seguinte:Definindo
restart: always
assim:Referência: https://docs.docker.com/compose/compose-file/compose-file-v2/
fonte
O Docker não está pronto imediatamente Se você executar o script muito cedo, nada acontecerá. O docker começará a responder ao comando docker ps assim que estiver pronto, para que você possa usar este truque no crontab:
nano / etc / crontabs / root
@reboot / usr / bin / docker ps && / usr / bin / docker-compose -f /prod.yml start
fonte