越来越多的应用程序有手册告诉您最好在 Docker 容器中运行它。但是,如果您希望应用程序遵循 docker 容器运行所在的 Linux 操作系统的系统运行级别,并且可以使用“ ”sudo service myservice start
和“ systemctl enable myservice
”等命令进行控制,那么将其设为 systemd 服务会更容易。在没有 docker 的情况下运行它可能会很麻烦。我可以将这个问题缩小到 Java Spring Boot 应用程序,因为这是我自己编写的应用程序的主要用例,但我宁愿采用更通用的方法来做到这一点,如下所示:
- 易于配置
- 优雅地重新启动
- 保留了 systemd 控制的大部分或全部优点
当然,我不应该采用这种方法是有原因的,我可以猜测接下来会出现的一些反应。我对此很感兴趣。事情应该尽可能简单,但不能更简单(爱因斯坦之类的)。但描述一种可行的简单方法可能会让 Linux 和 Docker 社区受益。
回应下面的一些早期答案(感谢您的宝贵反馈!):我更喜欢通过一种控制方式来控制操作系统上的所有单独应用程序。默认情况下,它是 systemd,因为这是操作系统的默认设置。我知道使用容器与在操作系统本身上运行它有点不同,但我真的不知道如果我创建一个像“homeassistant-container”这样的系统服务来控制启动,我会打破什么规则并使用(在本例中)“homeassistant”作为该容器内的应用程序停止 Docker 容器