最近又開始做 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是打開狀態,請關閉 )
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
以上命令解釋為:
- -p 本地環境主機端口對應容器端口
- -e 設置環境變量
POSTGRES_USER 數據庫登錄用戶名
POSTGRES_PASSWORD 數據庫登錄密碼
POSTGRES_DB 數據庫名稱
--name 容器名稱
-
postgres:10 數據庫版本 10
當返回 “Status: Downloaded newer image for postgres:10” ,並返回它的 id 后,說明安裝成功了。
可以在 portainer 的 Image 列表中看到安裝的基本信息:
也可以在容器 Container 中看到已經啟動的,名為 db 的數據庫:
安裝 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 版本
在 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 界面設置
如果有不對的地方,歡迎指正。
切記,如果你的 VPN 是在運行階段,請關閉再跑 odoo 環境!!