Docker 如何在同一容器上启动redis server和node.js应用程序?

Docker 如何在同一容器上启动redis server和node.js应用程序?,docker,dockerfile,Docker,Dockerfile,作为标题,我尝试了Dockerfile,如下所示 # install redis-server and start it RUN yum install -y redis RUN service redis start # run node app when container starts CMD ["node", "app.js"] 在app.js中,我使用localhost连接到redis 但当我尝试运行容器时,结果发现redis服务器没有在localhost上运行,app.js无法启

作为标题,我尝试了Dockerfile,如下所示

# install redis-server and start it
RUN yum install -y redis
RUN service redis start

# run node app when container starts
CMD ["node", "app.js"]
在app.js中,我使用localhost连接到redis

但当我尝试运行容器时,结果发现redis服务器没有在localhost上运行,app.js无法启动

我知道人们通常在单独的容器中启动redis和node.js应用程序,但为什么我不能这样做呢


请给我一些意见。

你需要一些类似主管的东西,为什么不使用两个容器和docker compose


建议您的方法使用基本图像:

您需要类似于主管的东西,为什么不使用两个容器并使用docker compose


推荐的基本映像:在容器中,通常只启动一个软件。您可以启动多个,但需要一些工具,如supervisor runit、s6、daemontools,请参阅常见问题解答。在容器中,您通常只启动一个软件。您可以启动多个进程,但您需要一些工具,如supervisor runit、s6、daemontools,请参阅常见问题解答

我只是想知道为什么我不能在一个容器中运行两个进程。正如我所说,可以使用supervisor—但请记住docker不是VM。查找phusion passenger以获得适当的init和supervisor容器(尽管我根本不支持这种方法)。现在,您的容器负责确保服务运行,而您的编排工具则无法运行。每个容器有一个服务可以完全分离容器之间的关注点,并为您的编排工具提供容器级别的管理。我只是想知道为什么我不能在一个容器中运行两个进程。正如我所说,可以与主管一起运行-但请记住docker不是VM。查找phusion passenger以获得适当的init和supervisor容器(尽管我根本不支持这种方法)。现在,您的容器负责确保服务运行,而您的编排工具则无法运行。每个容器有一个服务允许在容器之间完全分离关注点,并为您的编排工具提供容器级管理。