По умолчанию докера контролирует один единственный процесс, и контейнер завершено/перезаписано (в зависимости от флажков запуска), когда этот контролируемый процесс завершается.
Существует конкретное распределение, целью которого является то, что вы преследуете, то есть иметь более одного процесса в докере, проверяя/перезапуская все из них, это изображение представляет собой 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/*
После этого просто убедитесь, что вы создаете папку за услугу и er/etc/service, а внутри - файл под названием «run». Это будет отправной точкой для вашей службы, пример (из дока) в Dockerfile:
RUN mkdir /etc/service/memcached
ADD memcached.sh /etc/service/memcached/run
Так что для вашей цели, просто создать пару папок + запустить файл, один для NGINX и других для Rails/Puma, и используйте это изображение в качестве базы.
Спасибо! Это то, что мне нужно. – nicq