Para permitir que os contêineres sejam iniciados automaticamente no ponto de inicialização, tentei adicionar o comando:
cd directory_has_docker-compose.yml && docker-compose up -d
em /etc/rc.local.
mas depois de reiniciar a máquina, os contêineres não funcionam.
Como funciona docker-compose up -d
na inicialização do sistema?
docker
docker-compose
user39544
fonte
fonte
--restart always
ou--restart unless-stopped
ou em docker-compose.yml userestart: always
-> Ref . Mas talvez não funcione em alguns recipientes!Respostas:
Quando usamos
crontab
ou o/etc/rc.local
arquivo obsoleto , precisamos de um atraso (por exemplosleep 10
, dependendo da máquina) para garantir que os serviços do sistema estejam disponíveis. Normalmente,systemd
(ouupstart
) é usado para gerenciar quais serviços iniciam quando o sistema é inicializado. Você pode tentar usar a configuração semelhante para isso:Ou, se você quiser executar sem a
-d
bandeira:Altere o
WorkingDirectory
parâmetro com o caminho do projeto encaixado. E habilite o serviço para iniciar automaticamente:fonte
systemctl start docker-compose-app
esystemctl status docker-compose-app
são o que você está procurando, eu acho.systemctl start docker-compose-app
encontrei com isso:Job for docker-compose-app.service failed because the control process exited with error code. See "systemctl status docker-compose-app.service" and "journalctl -xe" for details
service docker-compose-app start
service docker-compose-app status
service docker-compose-app stop
Você deve ser capaz de adicionar:
a cada serviço que você deseja reiniciar no arquivo docker-compose.yml
fonte
restart: always
tem alguns bugs sérios: montagens de host não serão anexadas na reinicialização, por exemplo. Na minha opinião, é melhor reinventar a roda, se a roda existente for quadrada.Se
docker.service
estiver ativado na inicialização do sistemae seus serviços em seu
docker-compose.yml
temtodos os serviços executados quando você reinicializa o sistema se você executar o comando abaixo apenas uma vez
fonte
Eu tentei
restart: always
, funciona em alguns contêineres (como php-fpm), mas enfrentei o problema de alguns contêineres (como o nginx) ainda não reiniciam após a reinicialização.Resolveu o problema.
fonte
Use restart: sempre em seu arquivo docker compose.
Docker-compose up -d
iniciará o contêiner a partir das imagens novamente. Usedocker-compose start
para iniciar os contêineres parados, nunca inicia novos contêineres de imagens.Além disso, você pode escrever o código no arquivo docker para que seja criado primeiro, caso seja dependente de outros contêineres.
fonte
always
, mas talvezunless-stopped
. Outras opções sãoon-failure
eno
. Isso é conhecido como política de reinicialização .Além
user39544
da resposta de, mais um tipo de sintaxe paracrontab -e
:fonte
crontab -e
como usuário pi, com pi um membro do grupo docker ...