「Docker Compose」- 開機自動啟動應用容器 @20210130


問題描述

當我們使用 Docker Compose 啟動應用程序之后,如果主機發生重啟,應用容器無法自動啟動。

我們可以使用 Docker Compose 的重啟策略,但是也存在一些問題。

該筆記將記錄:1)自動啟動服務的解決方案、2)及其常見問題和解決方法

方法一、通過 Docker Restart Policy 方法

在 Docker 中,支持 --restart 選項,來控制容器自動啟動。在 Docker Compose 中,應該使用 restart 屬性:

version: "3.6"
services:

  frontend:
    image: frontend:v1.0.0    
    depends_on:
      - backend
    restart: always

  backend:
    image: backend:v1.0.0
    restart: always

注意事項:
1)Docker 並不知道這些服務的依賴關系及啟動順序,需要我們精心編排 docker-compose.yaml 文件;
2)Docker Compose 不支持 deploy:restart_policy 屬性,該屬性只能用於 a swarm with docker stack deploy 環境;

方法二、通過進程管理服務(推薦)

該方法本質上還是在執行 docker-compose 命令。

使用 systemd 管理

如下示例,可以根據需要進行設置:

# cat /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker/app/
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

參考文獻

WikiNotes/開機自動啟動應用容器
Start containers automatically | Docker Documentation
How to run docker-compose up -d at system start up? - Stack Overflow
Compose file version 3 reference | Docker Documentation



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM