使用 Docker 搭建 odoo 13 本地环境,适用 win10 与 mac os
最近又开始做 odoo 网站了,原来在 odoo 12 上做的网站在升级为 13 后,网站就被擦除了,因为没有使用 odoo 的开发功能搭建的网站,而是直接使用 odoo 后台自带的编辑器写的静态文件与样式,只要升级就会替换掉这个编辑器的模板文件,然后网站内容就没的了。因此,这次想在本地搭一个 odoo 环境,方便除了开发网站外还可以制作一些模块主题。
我的电脑是联想的,系统为 win10.
本地搭建 docker 环境步骤为:
- 在本地建立目录 odoo 目录,我的目录是:D:\Code\docker\odoo
- 安装下载 docker ,并注册 docker id
- 安装 国内镜像加速器
- 安装 docker 界面管理工具:Portainer
- 安装 python3 (可选)
- 安装 odoo 数据库工具 PostgreSQL 并生成容器
- 安装 odoo 并生成容器
- 配置 odoo 工作目录与容器目录,并启动 odoo
- 打开 odoo 后台管理界面 ( 如果VPN是打开状态,请关闭 )
- 升级 PostgreSQL 数据库并连接
win 10 下的安装方法可能与 mac 有所不同。
在本地建立目录 odoo 目录
PS C:\Users\baiyy> d: PS D:\> ls PS D:\> cd Code PS D:\Code> cd docker PS D:\Code\docker> mkdir odoo
安装下载 docker
这个安装过程比较简单。
在安装其它工具前,配置国内镜像,Windows 10 or Mac OS 为例
对于使用 Windows 10
的用户,在任务栏托盘 Docker 图标内右键菜单选择 Settings
,打开配置窗口后在左侧导航菜单选择 Docker Engine
,在右侧像下边一样编辑 json 文件,之后点击 Apply & Restart
保存后 Docker 就会重启并应用配置的镜像地址了。
"registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ]
对于使用 macOS 的用户,在任务栏点击 Docker Desktop 应用图标 -> Perferences
,在左侧导航菜单选择 Docker Engine
,在右侧像下边一样编辑 json 文件。修改完成之后,点击 Apply & Restart
按钮,Docker 就会重启并应用配置的镜像地址了。
"registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ]
阿里云的镜像加速器最好配置上,否则在拉取 Postgresql 时会报错。
登录阿里云 -〉找到 [容器镜像服务] -〉在镜像中心,找到 [镜像加速器] -〉复制 [加速器地址] ,粘贴到 "registry-mirrors",镜像加速器数组中。
安装 docker 界面管理工具:Portainer
Portainer是一个允许我们通过网页界面管理Docker资源的工具。
安装方法,同样是使用 docker 的镜像工具。安装步骤为:
- 运行命令来从Docker Hub抓取容器镜像:docker pull portainer/portainer
- 为该镜像设置 tag :docker tag portainer/portainer portainer ( 可省略 )
- 在 docker 上挂载并启动 portainer,默认端口为 9000,并将宿主机端口也设置为 9000,同时设置宿主机与容器目录 :docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
- 本地浏览 http://localhost:9000/ 并设置本地登录帐号及密码
安装 odoo 数据库工具 PostgreSQL 并生成容器
odoo 的数据库为 PostgreSQL ,为方便管理,同样使用 docker 的镜像工具下载和安装。
docker pull postgres:10
在配置 PostgreSQL 时,数据库的默认端口 5432,在安装过程中需要配置数据库的用户名,密码及数据库名称,均使用 变量 通过命令配置,无须再通过 portainer 来设置,命令为:
docker run -p 5432:5432 -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:10
postgres:12 数据库安装查看官方文档:postgres 12 数据库安装文档
数据库安装好后,需要从映射出来的目录/Users/admin/Sites/Odoo/odoo13/data/pg/master
下找到这两个文件分别更改:
pg_hba.conf 新增红色框部分
postgresql.conf
更改这两个文件的目的是使用 localhost 访问。
以上命令解释为:
- -p 本地环境主机端口对应容器端口
- -e 设置环境变量
POSTGRES_USER 数据库登录用户名
POSTGRES_PASSWORD 数据库登录密码
POSTGRES_DB 数据库名称
--name 容器名称
-
postgres:10 数据库版本 10
当返回 “Status: Downloaded newer image for postgres:10” ,并返回它的 id 后,说明安装成功了。
可以在 portainer 的 Image 列表中看到安装的基本信息:
也可以在容器 Container 中看到已经启动的,名为 db 的数据库:
安装好数据 库后需要连接数据库:Navicat
安装 odoo 并生成容器
odoo 的默认端口为 8069
odoo 的安装方式同 PostgreSQL 一样,使用一条命令将 odoo 的端口号,容器名称,工作目录,安装版本以及连接数据库都配置好:
docker run -p 8069:8069 --name odoo -v D:/Code/docker/odoo/addons:/mnt/extra-addons --link db:db odoo:13
以上命令解释为:
-
-p 设置宿主机与容器端口
-
--name 设置容器名称
-
-v 绑定数据卷 ( Vluse ),设置工作目录与容器目录,如果工作目录中的 addons 下的文件有修改,对应容器 extra-addons 下的文件也会有修改,如果命令中不设置需要在 Portainer 中设置
-
--link 连接数据库 db,同时设置宿主机数据库名称与容器数据库名称
-
:13 下载 odoo 13 版本
odoo 13 连接 postgres:12 数据库参考以下官方文档,按照官方文档可以很方便快速的连接。
在 mac os 下,需要将工作目录配置在 docker 中,否则会docker 会报一个不能识别工作目录的错,配置方法如下:
上面的工作目录指定好后,再执行下面的命令,即可启动成功:
docker run -p 8069:8069 --name odoo -v /Users/admin/Documents/code/odoo/odoo13/addons:/mnt/extra-addons --link db:db odoo:13
设置好的工作目录也可以在 UI 界面,容器-〉Volumes-〉host 中看到。
当返回 odoo ID 时,说明安装成功。
同样在 Portainer 的 Container 与 Image 中同样可以看的到,此时,Portainer 中正在运行的镜像有 3个:
这时点击容器中 odoo 的端口 Published Ports 8069,会在浏览器中打开 odoo ,默认是无法访问的:http://0.0.0.0:8069/
因为本机的 host 文件没有将 0.0.0.0 指向当前服务器,需要将 0.0.0.0 替换成 localhost 就可以访问 odoo 了。
登录之后可以看到 odoo 13 的华丽丽的后台环境:
至此 docker 在本地配置 odoo 13 环境完成了,目前仅是把 docker 中的 odoo 映射到了本地的工具目录 D:\Code\docker\odoo 中。
接下来做的是使用 docker 的 DockerFile 文件将容器中的 odoo 与工作目录中的 odoo关联开发。
自启动
如果需要将 odoo db 一直启动或是跟随主机启动而启动,不用每次都敲启动命令,需要这样设置。
- 命令行设置:docker run -p 5434:5434 -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:10 --restart unless-stopped 在命令行尾部添加 --restart unless-stopped
- portainer 界面设置
升级 PostgreSQL 数据库为 12
命令:
# 连接数据库
docker run -d -p 8433:5432 -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db -v /Users/admin/Sites/Odoo/odoo13/addons:/mnt/extra-addons postgres:12
# 连接 odoo
docker run -p 8069:8069 --name odoo -v /Users/admin/Sites/Odoo/odoo13/addons:/mnt/extra-addons --link db:db -t odoo:13
创建 postgres:12 工作目录
mkdir -p /Users/admin/Sites/Odoo/odoo13/data/pg/master
数据库映射
docker run -d -p 8433:5432 --name db -e POSTGRES_PASSWORD=postgres -e "POSTGRES_USER=odoo" -e PGDATA=/var/lib/postgresql/data/pgdata -v /Users/admin/Sites/Odoo/odoo13/data/pg/master:/var/lib/postgresql/data postgres:12
配置安装 postgres:12
/Users/admin/Sites/Odoo/odoo13/data/pg/master/
是本地环境中数据库工作目录
/var/lib/postgresql/data
是 docker 环境中数据库工作目录
--name db
是本地数据库名称
odoo 拉取镜像并启动容器
/Users/admin/Sites/Odoo/odoo13/addons
是 本地环境中 odoo 的工作目录
/mnt/extra-addons
是 docker 环境中 odoo 的工作目录
db
是本地环境的 odoo 数据库名称
如果有不对的地方,欢迎指正。
切记,如果你的 VPN 是在运行阶段,请关闭再跑 odoo 环境!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下