odoo12数据迁移问题
-
运行此行命令之前我已经使用
docker-compose stop
停止在运行的容器了
运行此命令之后看容器的运行情况如下root@v-1:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 750e72e9ce65 odoo:12.0 "/entrypoint.sh odoo…" 9 seconds ago Up 7 seconds 8069/tcp, 8071/tcp odoo_web_run_1 bc78100efb3b odoo:12.0 "/entrypoint.sh odoo" 6 hours ago Exited (0) 3 hours ago odoo_web_1 6d31bedbe487 postgres:10 "docker-entrypoint.s…" 5 days ago Up 9 seconds 5432/tcp odoo_db_1
-
第一个运行中的docker确实没有端口映射出来。
如果猜得没错的话,你运行那个命令并没有在docker-compose.yml
文件所在的目录下运行,所以该文件所定义的端口映射没有起作用。 -
@digitalsatori 确定工作目录是在docker-compose.yml所在的文件件,如果在别的路径以上命令根本无法运行。
root@v-1:~# docker-compose run --rm web odoo -d md2 -i muk_web_theme --addons-path=/mnt/extra-addons ERROR: Can't find a suitable configuration file in this directory or any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml
之前我贴出来的日志都有带路径的,你可以看下,我的工作目录是~/odoo
-
哈哈,回答你的问题也让我学到了:https://github.com/docker/compose/issues/1259
docker-compose run
命令竟然是不理会docker-compose.yml
文件中的ports设定的,如果需要强制映射,需要加参数--service-ports
所以你的命令就应该是:docker-compose run --rm --service-ports web odoo -d md2 -i muk_web_theme --addons-path=/mnt/extra-addons
-
@digitalsatori 在 odoo12数据迁移问题 中说:
docker-compose run --rm --service-ports web odoo -d md2 -i muk_web_theme --addons-path=/mnt/extra-addons
可以访问了,和之前的问题一样,启动时日志提示错误,两个未知依赖项
muk_web_utils
和muk_autovacuum
,前台访问后日志显示登陆成功,之后再报一个错误ERROR md2 werkzeug: Error on request:
完整的日志如下
root@v-1:~/odoo# docker-compose run --rm --service-ports web odoo -d md2 -i muk_web_theme --addons-path=/mnt/extra-addons | grep ERROR Starting odoo_db_1 ... Starting odoo_db_1 ... done 2019-12-12 05:55:30,117 1 ERROR md2 odoo.modules.graph: module muk_web_theme: Unmet dependencies: muk_web_utils 2019-12-12 05:55:30,117 1 ERROR md2 odoo.modules.graph: module muk_web_utils: Unmet dependencies: muk_autovacuum 2019-12-12 05:55:41,807 1 ERROR md2 werkzeug: Error on request:
-
你没有贴全错误日志,错误日志最重要的是最后面若干行的内容。
如果确实是这个启动不成功的模块导致的,你可以先在原来的环境里卸载模块然后再将数据库恢复到docker的环境里。确保能登录系统了,再来看是否能再次安装该模块。
另外,
docker-compose run
命令是一个用于调试的临时启动container的命令,后面的--rm
确保在退出时可以把该命令生成的container删除。你其实可以用
docker-compose up -d
正常启动container, 然后使用命令docker exec -ti odoo_web_run_1 /bin/bash
其中
odoo_web_run_1
是你已启动的container的名字上述命令之后,你就在container里了,你可以和原来不用container时一样来调试odoo,
比如查看一下
/mnt/extra_addons
目录是否存在,里面是否有你的模块,查看一下文件/文件夹权限是否正确,
也可以用psql连接到数据库,比如:psql -hdb -Uodoo -dYourDBName
访问数据库
-
@digitalsatori
docker exec -it odoo_web_1 bash
这个命令之前已经运行过了,进入container执行ls /mnt/extra-addons
是能看到我放进去的文件的,新建数据库也能正确安装这个主题。
至于直接操作数据库。。。知识储备不足,不知道怎么弄。。。 -
很高兴你的问题能解决。跟你沟通很愉快
500的错误是nginx报的吧。还是要看后台的log。因为是主题,可能的原因是attachment路径的问题,主题中asset的路径是作为attachment保存在数据库中的。
如果你知道如何访问Odoo的数据库,你可以用命令:
delete from ir_attachment where name like '/web/content/%';
然后重新更新web模块。请先备份再尝试。