Aby umożliwić automatyczne uruchamianie kontenerów w momencie uruchamiania, próbowałem dodać polecenie:
cd directory_has_docker-compose.yml && docker-compose up -d
w /etc/rc.local.
ale po ponownym uruchomieniu komputera kontenery nie działają.
Jak działa docker-compose up -d
podczas uruchamiania systemu?
docker
docker-compose
user39544
źródło
źródło
--restart always
lub--restart unless-stopped
lub w docker-compose.yml userestart: always
-> Ref . Ale może nie działało na niektórych kontenerach!Odpowiedzi:
Kiedy używamy
crontab
lub przestarzałego/etc/rc.local
pliku, potrzebujemy opóźnienia (np. Wsleep 10
zależności od komputera), aby upewnić się, że usługi systemowe są dostępne. Zwyklesystemd
(lubupstart
) służy do zarządzania usługami uruchamianymi podczas uruchamiania systemu. Możesz spróbować użyć podobnej konfiguracji do tego:Lub, jeśli chcesz biegać bez
-d
flagi:Zmień
WorkingDirectory
parametr za pomocą zadokowanej ścieżki projektu. I włącz usługę, aby uruchamiała się automatycznie:źródło
systemctl start docker-compose-app
i myślę, żesystemctl status docker-compose-app
są tym, czego szukasz.systemctl start docker-compose-app
napotkałem z tym: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
Powinieneś móc dodać:
do każdej usługi, którą chcesz ponownie uruchomić w pliku docker-compose.yml
źródło
restart: always
ma kilka poważnych błędów: na przykład punkty montowania hosta nie zostaną dołączone przy ponownym uruchomieniu. Moim zdaniem lepiej wymyślić koło na nowo, jeśli istniejące koło jest kwadratowe.Jeśli masz
docker.service
włączone przy starcie systemui twoje usługi w swoich
docker-compose.yml
zasobachwszystkie usługi działają po ponownym uruchomieniu systemu, jeśli uruchomisz poniższe polecenie tylko raz
źródło
Próbowałem
restart: always
, działa na niektórych kontenerach (takich jak php-fpm), ale napotkałem problem polegający na tym, że niektóre kontenery (takie jak nginx) nadal nie uruchamiają się ponownie po ponownym uruchomieniu.Rozwiązać problem.
źródło
Użyj ponownego uruchomienia: zawsze w pliku redagowania Dockera.
Docker-compose up -d
ponownie uruchomi kontener z obrazów. Służydocker-compose start
do uruchamiania zatrzymanych kontenerów, nigdy nie uruchamia nowych kontenerów z obrazów.Możesz również zapisać kod w pliku Dockera, aby został utworzony jako pierwszy, jeśli ma zależności od innych kontenerów.
źródło
always
, ale możeunless-stopped
. Inne opcje toon-failure
ino
. Jest to znane jako zasada ponownego uruchamiania .Jako dodatek do
user39544
odpowiedzi, jeszcze jeden typ składni dlacrontab -e
:źródło
crontab -e
jako użytkownik pi, z pi członkiem grupy