当我从docker compose单独运行它们时,容器将退出

当我从docker compose单独运行它们时,容器将退出,docker,docker-compose,dockerfile,containers,microservices,Docker,Docker Compose,Dockerfile,Containers,Microservices,我从运行一个开源微服务。当我运行docker ps时,所有容器的状态都处于上升状态,这意味着它们一直在运行。我的问题是,当我单独运行一个容器时,它没有继续运行并退出。下面是docker compose文件中定义的服务之一 social-graph-service: image: yg397/social-network-microservices hostname: social-graph-service restart: always entrypoint: Soc

我从运行一个开源微服务。当我运行docker ps时,所有容器的状态都处于上升状态,这意味着它们一直在运行。我的问题是,当我单独运行一个容器时,它没有继续运行并退出。下面是docker compose文件中定义的服务之一

social-graph-service:

   image: yg397/social-network-microservices
   hostname: social-graph-service
   restart: always
   entrypoint: SocialGraphService
当我使用命令运行它时

sudo docker run -d --restart always --entrypoint SocialGraphService --hostname social-graph-service yg397/social-network-microservices

然后它的状态不上升,运行后退出。为什么在我使用sudo docker compose up运行容器时,所有容器都会连续运行?当我单独运行它们时退出

图形服务似乎依赖于MongoDB才能运行。我猜当您单独运行它时,它会崩溃,因为mongo实例不存在,并且无法连接

repo的作者编写docker compose文件是为了向您隐藏一些复杂性,但这是微服务之间的一个重要关系树,大多数微服务似乎依赖于现有的其他服务来启动

--更新--


真正的问题在下面的评论中。OP在尝试启动另一个容器时已在运行docker compose堆栈,但忘记将容器连接到docker compose生成的docker网络。

能否共享docker-compose.yml文件?…以及容器中的日志,还有足够的应用程序源代码来重现这个问题?entrypoint看起来很可疑——你能证明它的合理性吗?这是一个开源项目,当我以前台模式运行它时,可以在github上使用“sudo docker run--始终重新启动--entrypoint SocialGraphService--主机名social GraphService yg397/social network microservices”然后发生此错误“在抛出'std::runtime_error'实例后终止调用what():错误解析地址:名称或服务未知“我已经使用docker compose运行了所有服务,所有这些容器都在持续运行。现在我只运行graph service container,我认为如果graph service依赖于mongoB,那么它将找到mongoDB。该服务不能只找到mongo实例而不提供主机名,但看起来repo装载了一个包含这些主机的全局
config/service config.json
文件。假设它安装正确,那么它就会被找到。但是,docker compose还为compose堆栈生成隔离网络。要查找网络名称,请运行
docker network ls
。它起作用了。我的错误是没有将容器连接到应用程序网络。现在它的地位也上升了。我犯了多么愚蠢的错误。谢谢David的帮助,节省了我的时间。这个答案实际上并不包含答案(关于网络和服务发现/dns)。您能否更新答案,以便将来阅读它的其他人能够理解这里的根本问题。Thx.对上述答案进行了更新,以引用该结论