使用Fabric

时间:2015-09-03 13:53:09

标签: django fabric docker-compose

我有一个在Docker容器中运行的Django站点,它使用docker-compose来管理各种容器(数据库,nginx等)。我使用Django manage.py命令将一些Django任务用于站点维护。它们的命令采取以下形式: manage.py updateflickr --settings=mysite.myproj.prod

在docker-compose下运行,它们看起来像: docker-compose run --rm app manage.py updateflickr --settings=mysite.myproj.prod

我的问题是,当我尝试使用Fabric运行这些相同的命令时,似乎没有使用我指定的设置文件。 Django返回数据库连接错误,这通常意味着它没有获取正确的数据库信息,或者在这种情况下是mysite.myprod.prod中指定的连接

我的Fabric文件如下:

import os

from fabric.api import *


env.hosts = ['myserver.com']
env.user = "myuser"
env.key_filename = '~/.ssh/do_rsa'
env.shell = '/bin/bash -c'

@task
def updateflickr():
    run('docker-compose run --rm app python manage.py updateflickr --settings=mysite.myproj.prod')

我也在我的DJANGO_SETTINGS_MODULE中设置了docker-compose.yml环境变量,但得到了相同的结果。最后,我尝试的最后一件事是将命令包装在shell脚本中。相同的结果 - 如果我在服务器上运行,它运行正常。如果我从Fabric运行shell脚本,我会遇到数据库连接问题。

更新

我不太确定这是关于Fabric的问题,然后是关于docker-compose如何运行的问题。如果我尝试以下内容:

ssh -t me@myserver.com 'docker-compose run --rm app python manage.py updateflickr --settings=mysite.myproj.prod'

我仍然得到相同的结果。只需发送命令就可以加载交互式shell。我尝试使用带有和不带ssh标志的-t,因为docker-compose可能需要pty有效。

0 个答案:

没有答案