To jest na maszynie Wirtualnej Ubuntu 14.04 LTS z uruchomionym Dockerem i podejrzewam, że respawn
jest to przyczyną mojego problemu, ale nie jestem pewien idealnego rozwiązania.
Bieżący skrypt wstępny ( 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
To „działa”, ponieważ myapp
jest żywe i responsywne, ale /sbin/init
zajmuje cały procesor, gdy monitoruję htop
. Jeśli usunę wpis z upstart ( sudo rm /etc/init/dockersuitecrm.conf
) i ręcznie SSH w i uruchom docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
, nie widzę procesora w 100% problem i jak poprzednio myapp
jest ponownie żywy i responsywny.
Podejrzewam więc, że sposób, w jaki zaczynam powyżej kompilację dokera, jest nieprawidłowy. Jaki jest właściwy sposób, aby rozpocząć docker-compose
zawsze działa bez ręcznej interwencji?
EDYCJA: Nie powinno mieć znaczenia, ale /usr/bin/myapp -> /home/batman/dockerapps/myapp
jako symboliczny link.
respawn
polecenia w skrypcie.docker-compose start
.script
bloku. Może to część problemu? Zamiast tego mamchdir /usr/bin/myapp/
i w następnym wierszuexec docker-compose up
.docker-compose up -d
Odpowiedzi:
Po prostu użyj crontab, zamiast interwału czasowego, po prostu powiedz @reboot
Zaloguj się jako użytkownik, który powinien uruchomić ten skrypt i wpisz polecenie
a następnie wprowadź
Uruchom ponownie system i sprawdź, czy działa. Jest jedna zaleta w stosunku do upstart, nawet jeśli jest ona uruchomiona nieco później, nie musisz się martwić o zależności, takie jak sieci itp., Aby być już gotowym.
źródło
Zakładając, że korzystasz z wersji 2 definicji Docker Compose
docker-compose.yml
, możesz wykonać następujące czynności:Tak zdefiniowane
restart: always
:Odniesienie: https://docs.docker.com/compose/compose-file/compose-file-v2/
źródło
Docker nie jest gotowy natychmiast Jeśli uruchomisz skrypt zbyt wcześnie, nic się nie stanie. Okno dokowane zacznie odpowiadać na polecenie dokera ps, gdy tylko będzie gotowe, aby można było użyć tej sztuczki w crontab:
nano / etc / crontabs / root
@reboot / usr / bin / docker ps && / usr / bin / docker-compose -f /prod.yml start
źródło