dotcloud supervisord.conf 文件环境规范

标签 dotcloud

http://docs.dotcloud.com/guides/daemons/状态:

Configuring The Environment
You can easily modify the environment of execution of your daemon with the “directory” and “environment” directives to change the directory where the command is executed and to define additional environment variable. For example:

[program:daemonname]
command = php my_daemon.php
directory = /home/dotcloud/current/
environment = QUEUE=*, VERBOSE=TRUE

但是,我发现我的 PYTHONPATH 环境变量没有被设置:

点云.yml:

www:
  type: python
db:
  type: postgresql
worker:
  type: python-worker

supervisord.conf:

[program:apnsd]
command=/home/dotcloud/current/printenv.py
environment=PYTHONPATH=/home/dotcloud/current/apnsd/

打印环境

#! /home/dotcloud/env/bin/python
import os
print "ENVIRONMENT"
print os.environ

日志:

    ENVIRONMENT
    {'SUPERVISOR_ENABLED': '1', 'SUPERVISOR_SERVER_URL': 'unix:///var/dotcloud/super
    visor.sock', 'VERBOSE': 'no', 'UPSTART_INSTANCE': '', 'PYTHONPATH': '/', 'PREVLE
    VEL': 'N', 'UPSTART_EVENTS': 'runlevel', '/': '/', 'SUPERVISOR_PROCESS_NAME': 'a
    pnsd', 'UPSTART_JOB': 'rc', 'PWD': '/', 'SUPERVISOR_GROUP_NAME': 'apnsd', 'RUNLE
    VEL': '2', 'PATH': '/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    ', 'runlevel': '2', 'previous': 'N'}

不显示修改过的 python 变量!

最佳答案

Supervisor 有一个bug;一些变量(比如那些包含 / 的变量)必须被引用。

在这种情况下,您需要:

[program:apnsd]
command=/home/dotcloud/current/printenv.py
environment= PYTHONPATH="/home/dotcloud/current/apnsd/"

(= PYTHONPATH 中的空格不是强制性的,它只是为了使文件稍微更具可读性;但是,PYTHONPATH 值周围的引号是必需的! )

我将更新 dotCloud 的文档以提及此问题。

关于dotcloud supervisord.conf 文件环境规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10653590/

相关文章:

dotcloud - 在 Docker 中将目录从主机安装到容器

perl - 如何获取 dotcloud 上的真实客户端 IP?

ruby-on-rails - @_request.env ['HTTP_X_MY_TOKEN' ] 返回什么?

websocket - 如何将在 dotcloud 上提供 websockets 的 Tornado 服务器暴露给 www?

dotcloud - 我在 dotcloud 中有一个自定义域,如何在自定义域上添加 ssl

perl - 正在安装模块(不是?),因为它是最新的(是吗?)

dotcloud - dotcloud.yml 中的两个 WWW