2016-11-12 106 views
1

我已经使用Nginx创建了Ruby on Rails项目。 Rails应用程序和Nginx运行在单独的和链接的容器中。这种配置工作正常。然而...Docker - 在单个容器中运行两个进程

1)是否可以在一个容器中同时运行(Rails/Puma服务器+ Nginx)?

2)Dockerfile中的CMD命令应该怎么样?

3)我应该在docker-compose.yml中使用哪个命令作为“command:”属性?

我认为配置运行它们在不同的容器是更好的解决方案,但我想了解所有可能性。

我使用彪马作为Rails的应用服务器并运行它,我使用的命令:捆绑EXEC PUMA -C配置/ puma.rb

回答

3

默认情况下,搬运工监视一个单一的过程,并且所述容器为完成/重新启动(取决于启动标志)。

有一个特定的分布,旨在做你正在追求的东西,也就是说,在docker实例中有多个进程存活,同时监视/重新启动它们,这个图像是phusion/baseimage,你会在这里找到它:https://github.com/phusion/baseimage-docker

在此图像上,您所做的是您通过在/ 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/* 

之后,只要确保您创建的每个服务的文件夹und er/etc/service,里面有一个名为“run”的文件。这将是你的Dockerfile的服务,例如(从DOC)的入口点:

RUN mkdir /etc/service/memcached 
ADD memcached.sh /etc/service/memcached/run 

因此,对于你的目标,只是创建几个文件夹+运行文件,一个为NGINX和其他的的Rails/Puma服务器,并以此图片为基础。

+0

谢谢!那是我需要的。 – nicq

相关问题