CentOS 7.3上使用Docker部署Odoo 11

 本教程是公司内部培训教程,转载请注明出处!

CentOS 7.3上使用Docker部署Odoo 11,以下操作是在阿里云ECS上进行的。

一、 升级内核
高版本的内核对docker的原生支持会好一些,所以在CentOS 上部署Docker应用,升级一下内核比较好

1、导入key (可选)

2、安装elrepo的yum源

3、 查看可用 (可选)

yum --enablerepo=elrepo-kernel  list  | grep kernel*

4、安装内核 (安装 long term)

yum --enablerepo=elrepo-kernel install kernel-lt -y

5. 修改启动顺序

vim /etc/default/grub   (将GRUB_DEFAULT=saved 改成 GRUB_DEFAULT=0)
grub2-mkconfig -o /boot/grub2/grub.cfg  (保存修改)
重启之后,可以查看一下内核版本

二、 安装 Docker (使用阿里云镜像)

1. 设定 yum 源,添加 /etc/yum.repos.d/docker.repo,内容如下:

[dockerrepo]

name=Docker Repository
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

2. 安装docker-engine

yum provides '*/applydeltarpm'
yum -y install deltarpm
yum -y install docker-engine-selinux-17.03.0.ce
yum -y install docker-engine-17.03.0.ce (需要指定版本)

3. 启动并查看版本信息

systemctl enable docker
systemctl start docker
docker info 

三、下载镜像文件 

1. 下载 Odoo源代码

Odoo社区版源代码可以http://nightly.odoo.com网站下载。Linux下可以直接使用下面的命令: 
curl -O http://nightly.odoo.com/11.0/nightly/src/odoo_11.0.20181110.tar.gz

2. 配置Docker加速器

某些镜像仓库访问起来速度很慢,国内目前有阿里云开通了镜像服务(https://dev.aliyun.com),可以自行注册。注册并登录之后,注意关注帮助信息,它会提示帐号的加速方法。
首先执行下来操作:
cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
然后修改该文件,配置加速器(具体参数由阿里云帐号给出)
ExecStart=/usr/bin/dockerd --registry-mirror=https://qeoh646y.mirror.aliyuncs.com (<-- 该参数参考阿里云帐号)

3. 登陆到阿里云的Registry

docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com

4. 通过下载指定的镜像地址,下载Docker镜像

docker pull registry.cn-hangzhou.aliyuncs.com/odoo_test/odoo11:pyh0731Y18

该镜像是我们鹏云汇公司自定义的Odoo11镜像,先存放于阿里云镜像仓库,并可以公开下载。该镜像加入了中文字体(带中文的报表不会乱码),并增加了源代码的挂载点,使得我们可以自由更换源代码的版本(参考下面第6点说明)。

5. 运行 PostgreSQL server (没有镜像会自动下载)

docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db postgres:9.6.8

6.  运行 Odoo 实例

docker run -v /opt/odoo/runtime/odoo11:/var/lib/odoo -v /opt/odoo/addons:/mnt/extra-addons -v /opt/odoo/src/odoo:/usr/lib/python3/dist-packages/odoo -p 8069:8069 --name odoo11 --link db:db -t 5cd94d160443
注:/usr/lib/python3/dist-packages/odoo 就是该镜像文件中新增的用于挂载源代码的挂载点。其它挂载点是原本就有的。

7. 修改被挂载的本地文件夹权限

当挂载了本地文件夹之后,容器运行时容易出现权限访问的问题。此时需要将本地文件夹的权限赋予容器用户。
首先查看容器用户ID,运行下列命令:(注:下列命令的docker_image需要换成相应的image ID)
docker run -ti --rm --entrypoint="/bin/bash" docker_image -c "whoami && id"

命令运行结束之后,会输出类似 uid = 104。该结果就是容器内部用户的uid。

最后用该uid修改相应的文件夹权限:
chown -R 104:104 /opt/odoo/runtime/odoo11 /opt/odoo/addons /opt/odoo/src/odoo


如不出意外,Odoo就可以运行起来了!

本教程是公司内部培训教程,转载请注明出处!