Tag: supervisord

具有Newrelic Python代理和Supervisord的Docker容器不发送数据

我在使用supervisord运行的uwsgi中有一个dockerised的Django应用程序,我试图使用Newrelic APM监视应用程序。 新的Relic Python代理程序安装命令是在Dockerfile和wsgi.py中编写的,包含下面的代码。 import newrelic.agent<br/> newrelic.agent.initialize('/opt/testapp/newrelic.ini') 我的supervisord.conf文件: [program:newrelic]<br> command=newrelic-admin run-program uwsgi –thunder-lock –ini /opt/testapp/uwsgi.ini –protocol http<br> autostart=true<br> autorestart=true<br> redirect_stderr=true 下面是我的Dockerfile命令来复制supervisord conf文件并运行supervisord COPY config/supervisord-newrelic.conf /etc/supervisor/conf.d/supervisord.conf <br> CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] 运行docker-compose up命令后,应用程序开始运行,没有任何问题,应用程序名称在New Relic APM仪表板中列出,但未在我的newrelic APM仪表板中显示任何数据。

docker与shiny的服务器亲问题

我已经在centos上创build了两个带shiny服务器的centos : Docker与shiny server – 免费版在这里 Docker与shiny server pro (使用临时许可证) 在这里 这些docker是在centos ,因为它被认为最终将作为受支持的Linux版本(可能是dockerised或native)在RHEL运行。 目前,它们为testing和开发提供了一个便捷的途径。 它们主要是为了开发而devise的:它们包括R , RStudio Server和Shiny Server :可能不是Docker纯粹主义者会做或推荐的东西(可能生产版本将基于docker撰写)。 我遇到的问题是,虽然有shiny server免费版的Docker工作正常, 但有了shiny server pro版的Docker不起作用 (可能是supervisord的问题?)。 2015-09-19 12:40:10,379 CRIT Supervisor running as root (no user in config file) 2015-09-19 12:40:10,385 INFO supervisord started with pid 1 2015-09-19 12:40:10,387 INFO spawned: 'shinyserver' with pid 8 2015-09-19 […]

用`docker-compose`重复使用容器

我有一个应用程序在docker docker-compose定义的多个Docker容器上运行。 一切工作正常,从我的用户和docker-compose ps输出如下所示: Name Command State Ports ———————————————————— myuser_app_1 /config/bootstrap.sh Exit 137 myuser_data_1 sh Exit 0 myuser_db_1 /run.sh Exit 143 现在我正在尝试运行docker-compose up和supervisord (请参阅下面的supervisord.conf相关部分),问题是容器现在被命名为myapp_app_1 , myapp_data_1和myapp_db_1 ,也就是说,它们是从头开始创build的,所有自定义前者的容器丢失了。 我尝试重命名容器,但它给出了一个错误,说已经有一个名称的容器。 问:是否有一些方法可以强制docker-compose重用现有的容器,而不是根据各自的图像创build新的容器? supervisord.conf … [program:myapp] command=/usr/local/bin/docker-compose -f /usr/local/app/docker-compose.yml up redirect_stderr=true stdout_logfile=/var/log/myapp_container.log stopasgroup=true user=myuser

Docker:推迟依赖另一个容器的启动操作?

我有两种types的Docker容器:一种使用Web应用程序(nginx / php-fpm),另一种使用MySQL数据库。 两者都通过networking连接。 应用程序容器知道数据库容器,但是,数据库不知道零个或一个或多个应用程序容器是否可用。 这两种容器都使用Supervisord。 数据库容器必须启动mysqld ,这可能需要几秒钟的时间。 另一个容器必须执行一些启动操作,其中一部分需要数据库访问。 由于这些操作依赖于数据库容器,因此我在脚本的顶部放置了一个循环,等待数据库服务器可用: try=0 ok=0 until mysql -h$dbhost -u$dbuser -p$dbpass -e "USE $dbname" && ok=1; do [ $((++try)) -gt 30 ] && break sleep 1 done if [ $ok -gt 0 ]; then # DO STUFF else exit 1 fi 虽然这确实起作用,但是我发现有两个缺点:首先,如果数据库容器停机或者在启动应用程序容器时启动某个超时,则脚本将失败。 其次,应用程序容器将不知道数据库服务器上是否有更改(例如,迁移)。 当我知道Supervisord事件时 ,我想知道:如何在同一个networking中通知任意数量的其他容器? (注意:我没有限制使用Supervisord,我只是觉得这是最有希望的方法。)

重新启动运行supervisord程序的docker可以保留pid文件,并在重新启动时导致错误

我有一个docker,通过supervisord运行django芹菜工,程序设置非常简单 [program:celery_priority] command=python manage.py celery worker -E -Q priority –concurrency=2 –loglevel=ERROR directory=/var/lib/app stdout_events_enabled = true stderr_events_enabled = true stopwaitsecs = 600 [program:celery_medium] command=python manage.py celery worker -E -Q medium –concurrency=2 –loglevel=ERROR directory=/var/lib/app stdout_events_enabled = true stderr_events_enabled = true stopwaitsecs = 600 [program:celerycam] command=python manage.py celerycam directory=/var/lib/app stdout_events_enabled = true stderr_events_enabled = true stopwaitsecs = 600 […]

使用docker在supervisord中loggingstdout

我有几个需要运行supervisord的docker集装箱。 但是,我没有设法让主pipe捕获日志并将其输出到标准输出。 看起来,主pipe没有捕获他们的输出,并以与docker工作良好的方式吐出。 我很喜欢它前面的进程名称或东西。 我该怎么做? 从主pipe手册中不清楚。 除了主pipe,我还会考虑一个不同的工具。 它的缺点之一是它是用python编写的,它真的使Docker容器膨胀起来。 除了你的解决scheme,如果你有一个,是否有更好的工具与docker工作更好?

Docker,Supervisord和日志logging – 如何整合docker日志中的日志?

所以,通过uWSGI来试验Docker + Supervisord + Django应用程序。 我有整个工作正常,但需要整理日志logging。 如果我以非守护模式启动主pipe, /usr/bin/supervisord -n 然后我得到了监督日志标准输出的日志输出。 但是,如果supervisord处于守护进程模式,则它自己的日志将被隐藏在容器文件系统中,并且其应用程序的日志也会在自己的app_stderr / stdout文件中执行。 我想要的是将pipe理员和应用程序标准输出logging到docker日志中。 在非守护模式下启动supervisord是一个合理的想法,还是会造成意想不到的后果? 另外,我怎样才能获得应用程序日志也发挥到docker日志?

Supervisord不会显示来自进程的stdout

试图捕获我的应用程序的日志与监pipe人在docker。 这是我的supervisord.conf: [supervisord] logfile=/dev/null nodaemon=true [program:autofs] command=automount -f redirect_stderr=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 [program:split-pdf] command=bin/split-pdf-server directory=/root/split-pdf redirect_stderr=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 启动容器后,一切正常,我可以看到我的应用程序运行的结果(它在networking共享上创buildPDF文件) 但日志显示从我的应用程序没有输出: 015-07-02 00:39:26,119 CRIT Supervisor running as root (no user in config file) 2015-07-02 00:39:26,124 INFO supervisord started with pid 5 2015-07-02 00:39:27,127 INFO spawned: 'split-pdf' with pid 8 2015-07-02 00:39:27,130 INFO spawned: 'autofs' with pid 9 […]

ElasticBeanstalk Docker,一个Container还是多个容器?

我们正在开发一个新的REST API,它将使用Docker部署在AWS ElasticBeanstalk上。 它使用Python芹菜计划的工作,这意味着单独的过程需要运行的工人,我们目前的Dockerconfiguration有三个容器… 多容器Docker: 09c3182122f7 sso "gunicorn –reload –" 18 hours ago Up 26 seconds sso-api f627c5391ee8 sso "celery -A sso worker" 18 hours ago Up 27 seconds sso-worker f627c5391ee8 sso "celery beat -A sso -" 18 hours ago Up 27 seconds sso-beat 传统观点认为,我们应该在ElasticBean上使用多容器configuration,但是由于所有的容器都使用相同的代码,因此从OPS的angular度来看,使用带有Supervisord的单个容器configuration来pipe理stream程可能更加高效和简单。 单容器w / Supervisord: [program:api] command=gunicorn –reload –bind 0.0.0.0:80 –pythonpath '/var/sso' […]

docker + gunicorn + nginx需要supervisord吗?

我在docker里面用gunicorn运行django,我的入口点是docker: CMD [“gunicorn”,“myapp.wsgi”] 假设在系统启动时已经有一个运行docker的进程,并在停止时重新启动docker容器,那么我是否甚至需要使用supervisord? 如果gunicorn会崩溃不会崩溃的docker,然后重新启动?