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