1.1前言
这里安装直接用Docker安装,因为它比较方便和快捷。Odoo的镜像路径在这里。
1.2简介
Odoo(以前称为OpenERP)是一套开源商业应用程序。
1.3Docker拉取镜像的命令
docker pull odoo
1.4详细说明
1.4.1支持的标签及对应的Dockerfile链接
1.4.2参考
-
获得帮助
the Docker Community Forums,the Docker Community Slack或者Stack Overflow
-
提问题
https://github.com/odoo/docker/issues
-
维护者
-
支持的架构:(更多信息)
amd64
-
发布镜像细节
repo-info repo's repos/odoo/
directory (history)
-
镜像更新
official-images PRs with label library/odoo
official-images repo's library/odoo
file (history)
-
描述的源地址
docs repo's odoo/
directory (history)
-
支持的Docker版本
the latest release (down to 1.6 on a best-effort basis)
1.4.3Odoo是什么
Odoo,从前被称为OpenERP,它是一套用Python编写的开源商业应用程序并且是根据AGPL许可证发布。这套应用程序涵盖了从网站/电子商务到制造,库存和会计的所有业务需求,所有这些都是无缝集成的。这是软件第一次成功实现这样的功能覆盖。Odoo是世界上安装最多的商业软件。Odoo被全球2.000.000用户使用,范围从非常小的公司(1个用户)到非常大的公司(30万用户)。
1.4.4如何使用镜像
该镜像需要一个正在运行的PostgreSQL服务
启动一个PostgreSQL服务
docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db postgres:9.4
运行docker ps
看下PostgreSQL服务是否已经运行了
root@iZuf635go40n72xorw3fs2Z:~/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a671aa10826f postgres:9.4 "docker-entrypoint.s…" 13 seconds ago Up 12 seconds 5432/tcp db
可以看到PostgreSQL服务已经起来了。
启动一个Odoo的实例
docker run -p 8069:8069 --name odoo --link db:db -t odoo
这里需要注意一下,运行的PostgreSQL服务容器的别名必须是db,这样Odoo实例才能通过别名连接到PostgreSQL服务容器。
运行docker ps
查看Odoo是否启动成功:
以上说明运行成功,访问一下网页看看:
可以看到能够正常访问网站,说明已经启动成功啦。
停止和重启Odoo实例
docker stop odoo
docker start -a odoo
停止和重启PostgreSQL服务
当PostgreSQL服务重启时,那么连接该服务的Odoo实例也需要重启,因为PostgreSQL服务地址改变了,所以连接也被打断了。
重新启动PostgreSQL服务器不会影响创建的数据库。
运行一个自定义配置的Odoo服务
在启动服务时使用绑定卷可以覆盖默认的配置文件(文件位置:/etc/odoo/openerp-server.conf)。假如你在/path/to/config/openerp-server.conf有一个自定义的配置文件,然后运行下面命令进行绑定卷操作进行重写:
docker run -v /path/to/config:/etc/odoo -p 8069:8069 --name odoo --link db:db -t odoo
请使用配置模板文件来编写你自己的配置文件,因为维护者已经在Docker容器中设置了一些运行Odoo的参数。
你也可以直接在命令行中指定Odoo的参数。但是这些参数必须在命令行的关键字--
后面出现,就像下面一样:
docker run -p 8069:8069 --name odoo --link db:db -t odoo -- --db-filter=odoo_db_.*
安装自定义插件
Odoo插件在Docker容器中的目录位置为/mnt/extra-addons
,你可以通过绑定该目录地址从而达到安装自定义插件的效果,命令如下:
docker run -v /path/to/addons:/mnt/extra-addons -p 8069:8069 --name odoo --link db:db -t odoo
运行多个Odoo实例
docker run -p 8070:8069 --name odoo2 --link db:db -t odoo
docker run -p 8071:8069 --name odoo3 --link db:db -t odoo
请注意,当主机和容器端口不一致(如8070和8069),为了简便的使用邮件和报告等功能,其中一个需要设置,设置位置Settings->Parameters->System Parameters,web.base.url参数设为该容器端口(例如127.0.0.1:8069)。
环境变量
为了更加轻易地连接到PostgreSQL服务,你可以调整以下的环境变量。
-
HOST:PostgreSQL服务的地址。如果你使用PostgreSQL容器,那就设置为容器的名字。默认为
db
。 -
PORT:PostgreSQL服务监听的端口。默认为
5432
。 -
USER:Odoo服务连接到PostgreSQL服务的用户名。如果你使用PostgreSQL容器,那就设置与
POSTGRES_USER
一样的值。默认为odoo
。 -
PASSWORD:Odoo服务连接到PostgreSQL服务对应上面用户的密码。如果你使用PostgreSQL容器,那就设置与
POSTGRES_PASSWORD
一样的值。默认为odoo
。
使用Docker compose一键部署Odoo
配置一个最简单的docker compose运行文件docker-compose.yml
:
version: '2'
services:
web:
image: odoo:10.0
depends_on:
- db
ports:
- "8069:8069"
db:
image: postgres:9.4
environment:
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
如果默认的PostgreSQL服务认证不适合你,你可以对环境参数进行调整:
version: '2'
services:
web:
image: odoo:10.0
depends_on:
- mydb
ports:
- "8069:8069"
environment:
- HOST=mydb
- USER=odoo
- PASSWORD=myodoo
mydb:
image: postgres:9.4
environment:
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=myodoo
这里还有一个最新的例子,例子中包含了如何绑定自定义插件,如何使用自定义配置文件和如何对odoo和PostgreSQL数据文件进行绑定卷:
version: '2'
services:
web:
image: odoo:10.0
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
db:
image: postgres:9.4
environment:
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
volumes:
odoo-web-data:
odoo-db-data:
想要启动你的odoo实例,你需要先进入到创建的docker-compose.yml
文件所在的目录,然后输入:
docker-compose up -d
如何升级或者说更新镜像
Odoo镜像会定期更新,以便使用最新的版本。请注意,从一个旧的版本升级到一个新的版本,是一个非常复杂的过程,这个过程需要一个精心设计的迁移脚本(详见Odoo Enterprise Upgrade page或者community project,这两个都是致力于写这些脚本的网站)。
假设你在一个名为old-odoo的Odoo实例上创建了数据库,现在你新下载了一个Odoo镜像,你想要让新的镜像有权力去访问old-odoo创建的数据库。
默认情况,Odoo 8.0使用一个文件夹存储附件(位置:/var/lib/odoo/filestore/)。我们应当在运行新的Odoo实例时绑定旧的Odoo实例的卷。
docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t odoo