如何正确地将具有supervisord的Docker容器部署到Jelastic

我有一个简单的Docker镜像,通过使用虚拟laravel php应用程序在ubuntu上构build。 我使用supervisord来启动nginx和php-fpm。 到目前为止,一切正常,在我的本地机器或docker可执行文件存在的任何地方都可以正常工作。

我试图在Jelastic环境中运行相同的图像,但是我得到了supervisord错误:

2017-01-21 14:34:30,283 INFO exited: cron (exit status 1; not expected) 2017-01-21 14:34:30,333 INFO exited: fpm (exit status 78; not expected) 2017-01-21 14:34:32,336 INFO spawned: 'cron' with pid 1216 2017-01-21 14:34:32,338 INFO spawned: 'fpm' with pid 1217 2017-01-21 14:34:32,341 INFO exited: cron (exit status 1; not expected) 2017-01-21 14:34:32,386 INFO exited: fpm (exit status 78; not expected) 

我已经联系了支持,他们告诉我cron和php-fpm已经在运行,因为systemd,所以他们login到我的节点,修复了一些东西,现在一切正在运行。

我想知道这是如何与文档中的“Native Docker™©support”™标语一致。

无论如何,我已经设置了新的示例应用程序的支持调查(图片 – https://hub.docker.com/r/rozhok/jelastic-laravel-docker/资源 – https://github.com/rozhok/jelastic-laravel -docker ),试图部署它,一切都突然好起来。

所以我的问题是:

  1. 在部署到Jelastic时如何避免supervisord和systemd冲突。 请记住,我想为我的所有环境拥有相同的图像,而且我不想为Jelastic准备“特殊”图像。

  2. 还有什么其他的警告我们应该知道吗? 也许Docker的支持应该多描述一下。

看来你只需要添加一行到你的Dockerfile: RUN systemctl禁用php-fpm将禁用从你的systemd进程中产生的php-fpm,你的进程肯定会由pipe理员启动,这将使图像与您的本地计算机上运行的Jelastic和Docker主机兼容。