Ruby on rails Docker-在单个容器中运行两个进程

Ruby on rails Docker-在单个容器中运行两个进程,ruby-on-rails,nginx,docker,docker-compose,microservices,Ruby On Rails,Nginx,Docker,Docker Compose,Microservices,我已经用Nginx创建了rubyonrails项目。Rails应用程序和Nginx运行在单独和链接的容器中。此配置工作正常。然而 1)是否可以在单个容器中同时运行这两个组件(Rails/Puma server+Nginx? 2)Dockerfile中的CMD命令应该是什么样子? 3)我应该使用什么命令作为docker compose.yml中的“command:”属性? 我认为在单独的容器中运行它们的配置是更好的解决方案,但我想了解所有可能的情况 我将Puma用作Rails的应用程序服务器,要运

我已经用Nginx创建了rubyonrails项目。Rails应用程序和Nginx运行在单独和链接的容器中。此配置工作正常。然而

1)是否可以在单个容器中同时运行这两个组件(Rails/Puma server+Nginx?

2)Dockerfile中的CMD命令应该是什么样子?

3)我应该使用什么命令作为docker compose.yml中的“command:”属性?

我认为在单独的容器中运行它们的配置是更好的解决方案,但我想了解所有可能的情况


我将Puma用作Rails的应用程序服务器,要运行它,我使用命令:bundle exec Puma-C config/Puma.rb默认情况下,docker监视一个进程,当该监视进程结束时,容器完成/重新启动(取决于启动标志)

有一个特定的发行版,旨在实现您所追求的目标,即在docker实例中有多个进程处于活动状态,同时监视/重新启动所有进程,此映像为phusion/baseimage,您可以在此处找到它:

在这幅图上,您要做的是创建任意多的服务,方法是在/etc/service下创建子目录,然后作为CMD启动并监视所有服务,如下所示:

# Use phusion/baseimage as base image. To make your builds reproducible, make
# sure you lock down to a specific version, not to `latest`!
# See https://github.com/phusion/baseimage-docker/blob/master/Changelog.md for
# a list of version numbers.
FROM phusion/baseimage:<VERSION>

# Use baseimage-docker's init system.
CMD ["/sbin/my_init"]

# ...put your own build instructions here...

# Clean up APT when done.
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

因此,对于您的目标,只需创建两个文件夹+运行文件,一个用于NGINX,另一个用于Rails/Puma服务器,并使用此图像作为基础。

谢谢!这就是我需要的。
RUN mkdir /etc/service/memcached
ADD memcached.sh /etc/service/memcached/run