docker openerp无法启动-停止

docker openerp无法启动-停止,openerp,docker,odoo,Openerp,Docker,Odoo,我已经创建了一个docker openerp容器。第一次从浏览器启动很好,我可以创建新数据库,也可以恢复以前的数据库 然后我执行一个docker stop openerp,然后执行一个docker start openerp。 从浏览器再次访问不再有效。我得到了后台界面,但出现了openerpserver错误 我曾经尝试过使用我自己的docker图片,这些图片是从Dockerhub上可以找到的源代码构建的,也使用了tinyerp/ubuntu openerp repo,效果类似 以下是我得到的错

我已经创建了一个docker openerp容器。第一次从浏览器启动很好,我可以创建新数据库,也可以恢复以前的数据库

然后我执行一个
docker stop openerp
,然后执行一个
docker start openerp
。 从浏览器再次访问不再有效。我得到了后台界面,但出现了openerpserver错误

我曾经尝试过使用我自己的docker图片,这些图片是从Dockerhub上可以找到的源代码构建的,也使用了tinyerp/ubuntu openerp repo,效果类似

以下是我得到的错误跟踪:

Client Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/openerp/addons/web/http.py", line 204, in dispatch
    response["result"] = method(self, **self.params)
  File "/usr/lib/pymodules/python2.7/openerp/addons/web/controllers/main.py", line 1427, in load
    action = req.session.model(action_type).read([action_id], False, ctx)
  File "/usr/lib/pymodules/python2.7/openerp/addons/web/session.py", line 42, in proxy
    result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw)
  File "/usr/lib/pymodules/python2.7/openerp/addons/web/session.py", line 30, in proxy_method
    result = self.session.send(self.service_name, method, *args)
  File "/usr/lib/pymodules/python2.7/openerp/addons/web/session.py", line 103, in send
    raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)


Server Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/openerp/addons/web/session.py", line 89, in send
    return openerp.netsvc.dispatch_rpc(service_name, method, args)
  File "/usr/lib/pymodules/python2.7/openerp/netsvc.py", line 296, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/usr/lib/pymodules/python2.7/openerp/service/web_services.py", line 626, in dispatch
    res = fn(db, uid, *params)
  File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 190, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
  File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 132, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 199, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 187, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 3679, in read
    result = self._read_flat(cr, user, select, fields, context, load)
  File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 3800, in _read_flat
    res2 = self._columns[f].get(cr, self, ids, f, user, context=context, values=res)
  File "/usr/lib/pymodules/python2.7/openerp/osv/fields.py", line 1145, in get
    result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
  File "/usr/lib/pymodules/python2.7/openerp/addons/base/ir/ir_actions.py", line 211, in _search_view
    'search', context=context)
  File "/usr/lib/pymodules/python2.7/openerp/addons/account/account_invoice.py", line 363, in fields_view_get
    res = super(account_invoice,self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
  File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 2278, in fields_view_get
    xarch, xfields = self.__view_look_dom_arch(cr, user, result['arch'], view_id, context=ctx)
  File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 1930, in __view_look_dom_arch
    fields = self.fields_get(cr, user, None, context)
  File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 3597, in fields_get
    res_trans = translation_obj._get_source(cr, user, self._name + ',' + f, 'field', context['lang'])
  File "/usr/lib/pymodules/python2.7/openerp/tools/cache.py", line 18, in lookup
    r = self.lookup(self2, cr, *args)
  File "/usr/lib/pymodules/python2.7/openerp/tools/cache.py", line 46, in lookup
    value = d[key] = self.method(self2, cr, *args)
  File "/usr/lib/pymodules/python2.7/openerp/addons/base/ir/ir_translation.py", line 336, in _get_source
    (lang or '', types, tools.ustr(name)))
  File "/usr/lib/pymodules/python2.7/openerp/sql_db.py", line 161, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/openerp/sql_db.py", line 226, in execute
    res = self._obj.execute(query, params)
InternalError: current transaction is aborted, commands ignored until end of transaction block

当您运行“开始”和“停止”时,您预计会发生什么?停止正在运行的容器将丢失所有内存中的数据和所有进程。您需要重新启动碰巧正在运行的任何进程,例如再次发出start CMD/ENTRYPOINT。但是您创建的所有数据库都将消失。如果要保留进程和数据,可以尝试0.12.0中新增的暂停/取消暂停命令。这是一种快照机制,可能会执行您认为启动和停止应该执行的操作。

我想知道是否存在某种状态保留。您执行docker运行,它将启动所有内容,但docker停止将保持容器状态,docker启动将重新启动同一容器,而不是创建新映像。如果您使用docker rm,那么docker运行以创建新的容器是否有效?

我期望的是,当我通过停止openerp的服务或进程来停止/启动openerp时,在专用机器上会出现相同的行为。Docker似乎做了相当好的一部分工作,因为在我的Docker停止和Docker启动之后,我从入口点开始的启动脚本似乎再次启动,并且postgres和openerp所需的过程都启动良好。似乎openerp在web界面和数据库内容之间的某个地方搞砸了。数据库内容仍然存在,因为我已经在一个数据容器卷中创建了我的postgres集群。事实上,因为所有的目的不是每次都重新加载数据,所以我尝试了你的建议,保留数据容器。如果我从一个全新的空数据容器开始,它可以工作,但我必须“手动”恢复我的基础,这不是我想要的。如果我用现有数据启动一个新的执行容器,我也会遇到同样的问题。。。