在 Docker Compose 中设置开机自启动可以通过创建一个 systemd 服务,确保 Docker 容器在系统启动时自动运行。以下是一个示例步骤:
步骤 1:编写 docker-compose.yml 文件
确保你的项目已经有一个 docker-compose.yml 文件,这是 Docker Compose 管理服务的定义文件。
version: '3'
services:web:image: nginx:alpineports:- "80:80"db:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: example
步骤 2:创建一个 systemd 服务文件
- 在
/etc/systemd/system/目录下创建一个新的服务文件,例如:docker-compose-app.service
sudo nano /etc/systemd/system/docker-compose-app.service
- 添加以下内容到该文件:
[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service[Service]
WorkingDirectory=/path/to/your/docker-compose/project
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
Restart=always
TimeoutStartSec=0[Install]
WantedBy=multi-user.target
请确保 WorkingDirectory 指向你 docker-compose.yml 文件所在的目录,并且 ExecStart 和 ExecStop 指定了正确的 docker-compose 可执行文件的路径(可以通过 which docker-compose 命令确认路径)。
步骤 3:设置服务开机自启
- 重新加载
systemd:
sudo systemctl daemon-reload
- 启用服务开机自启动:
sudo systemctl enable docker-compose-app
- 启动服务:
sudo systemctl start docker-compose-app
验证服务是否启动
使用以下命令检查服务的状态:
sudo systemctl status docker-compose-app
这样,当系统启动时,Docker Compose 定义的容器将自动启动并运行。
