我已经为我的Spring Boot应用程序制作了一个Docker映像。我无法在Docker容器中运行systemctl命令。这是我执行时得到的东西
systemctl daemon reload
:-
Failed to connect to bus: No such file or directory
我遵循的构建Docker映像的步骤:-
1)docker build --rm -t <IMAGE_NAME> .
2)docker-compose up
3)docker exec -it <CONTAINER_NAME> bash
当我使用:-
启动服务时 service <SERVICE_NAME> start
我得到无法识别的服务。如何在docker内部执行服务?
答案 0 :(得分:2)
如果要重用现有的systemd服务描述符,则需要将systemd作为入口点运行,或者可以使用包装脚本,例如docker-systemctl-replacement,它既是服务管理器,又是init守护程序。
答案 1 :(得分:1)
正如David所评论的那样,通常在docker环境中不使用systemctl
之类的流程管理器。相反,您可以使应用程序成为映像的主要入口点。在https://spring.io/guides/gs/spring-boot-docker/#_containerize_it上,请参阅Spring文档中有关将其与docker结合使用的更多信息。
密钥在您的dockerfile中有这样的内容,而不是systemctl daemon reload
ENTRYPOINT ["java","-jar","/app.jar"]