我正在尝试在 Vagrant 盒子上设置一个 systemd 服务,它需要在开始之前安装 Vagrant 同步文件夹。
流浪档案
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/yakkety64"
config.vm.synced_folder ".", "/usr/local/src"
config.vm.provision "shell", path: "bootstrap/bootstrap"
end
Run Code Online (Sandbox Code Playgroud)
/etc/systemd/system/my-server.service
[Service]
ExecStart=/usr/bin/node /usr/local/src/index.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=my-server
User=ubuntu
Group=ubuntu
[Unit]
Requires=remote-fs.target
After=vboxguest.service
After=virtualbox-guest-utils.service
[Install]
WantedBy=remote-fs.target
Run Code Online (Sandbox Code Playgroud)
如果我不启用my-server服务,则同步文件夹已正确安装。但是当我尝试启用my-server服务时,该服务无法找到挂载的文件。如果我然后登录到 Vagrant 框,则不会安装该文件夹。似乎该服务尝试从该路径加载文件会干扰 Vagrant。
那么,如何在我的服务启动之前等待文件夹被挂载?
其他解决方案在各种方面都存在不足,需要人工干预才能启动服务,这是不可接受的。