我正在创建一个 systemd 服务来自动启动 docker 容器。它在当前会话期间完美运行systemctl start
,但无法在启动时自动启动(我有它enable
d)。
服务单位档案:
[Unit]
Description=TiddlyWiki Container
After=docker.service
Requires=docker.service
[Service]
Restart=always
RestartSec=5
TimeoutStartSec=60
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=%n
Environment="TW_PORT=8080"
Environment="TW_DOCKERVOLUME=%n"
Environment="TW_DOCKERUID=0"
Environment="TW_DOCKERGID=0"
EnvironmentFile=/etc/tiddlywiki/%n.conf
ExecStartPre=-/usr/bin/docker stop %n
ExecStartPre=-/usr/bin/docker rm %n
ExecStartPre=/usr/bin/docker pull nicolaw/tiddlywiki
ExecStart=/usr/bin/docker run -p ${TW_PORT}:${TW_PORT} -e TW_PORT=${TW_PORT} --env-file /etc/tiddlywiki/%n.conf --user ${TW_DOCKERUID}:${TW_DOCKERGID} -v ${TW_DOCKERVOLUME}:/var/lib/tiddlywiki --name %n nicolaw/tiddlywiki
ExecStop=-/usr/bin/docker stop %n
[Install]
WantedBy=multi-user.target
这是来自的日志journalctl
Dec 11 00:54:58 ub-2004-ins3 systemd[1]: tidwiki.service: Found ordering cycle on multi-user.target/stop
Dec 11 00:54:58 ub-2004-ins3 systemd[1]: tidwiki.service: Found dependency on docker.service/stop
Dec 11 00:54:58 ub-2004-ins3 systemd[1]: tidwiki.service: Found dependency on tidwiki.service/stop
Dec 11 00:54:58 ub-2004-ins3 systemd[1]: tidwiki.service: Job multi-user.target/stop deleted to break ordering cycle starting with tidwiki.service/stop
我猜问题是由于部分WantedBy
中的目标造成的[Install]
。但我不知道除了 之外什么目标值是合适的multi-user.target
。
请帮忙。
答案1
您可以尝试添加
USER=root
到.service
文件。这为我解决了。