安裝Docker
windows系統(tǒng),參考 docker官方文檔
mac系統(tǒng),參考 docker官方文檔
構(gòu)建自定義ODOO鏡像
標(biāo)準(zhǔn)ODOO鏡像可能不包含特別的Python模塊,或者linux工具,此時(shí)需要 自定義 Odoo鏡像
寫dockerfile
編寫dockerfile,例如加入需要的python庫(kù)
? 10.1 git:(master) ? cat Dockerfile
FROM odoo:10.0
MAINTAINER Odoo S.A. <info@odoo.com>
USER root
COPY ./pip.conf /root/.pip/pip.conf
RUN set -x;
pip install pypinyin pypdf
# Set default user when running the container
USER odoo
ENTRYPOINT ["/entrypoint.sh"]
CMD ["odoo"]
說(shuō)明: 上面的自定義鏡像,是在Odoo10 基礎(chǔ)上,安裝了 pypinyin 模塊,為了使用本地pip鏡像,例如 pip.conf 內(nèi)容
? 10.1 git:(master) ? cat pip.conf
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
構(gòu)建鏡像
基于dockerfile構(gòu)建鏡像
? 10.1 git:(master) ? docker build . -t odoo:10.1
Sending build context to Docker daemon 3.072kB
Step 1/8 : FROM odoo:10.0
---> 50bfb7575fe2
Step 2/8 : MAINTAINER Odoo S.A. <info@odoo.com>
---> Using cache
---> 353b1366ee28
Step 3/8 : USER root
---> Using cache
---> 27ec1ca1072c
Step 4/8 : COPY ./pip.conf /root/.pip/pip.conf
---> Using cache
---> ebdd6547d4e1
Step 5/8 : RUN set -x; pip install pypinyin pypdf
---> Using cache
---> 72edd5d9d792
Step 6/8 : USER odoo
---> Using cache
---> 0cc904972ec2
Step 7/8 : ENTRYPOINT ["/entrypoint.sh"]
---> Using cache
---> e4738346b7a3
Step 8/8 : CMD ["odoo"]
---> Using cache
---> 793edee6ab30
Successfully built 793edee6ab30
Successfully tagged odoo:10.1
這樣,就會(huì)建立odoo:10.1 鏡像
比如 docker images查看鏡像
? 10.1 git:(master) ? docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
odoo 10.1 793edee6ab30 3 days ago 894MB <<<<<
<none> <none> 2ebbc09b340c 4 days ago 888MB
<none> <none> 5e1be85e3ee9 4 days ago 894MB
<none> <none> cd0e2acac50b 4 days ago 536MB
<none> <none> 317e442f4416 4 days ago 561MB
<none> <none> 7d6ae7c50fb6 4 days ago 549MB
<none> <none> 73c08dfaaf64 4 days ago 546MB
pycharm_helpers PY-183.6156.16 0430ed2d37ee 6 days ago 37.1MB
odoo 13.0 b77d7d215af3 7 days ago 1.14GB
<none> <none> 7b449bc0b8bd 7 days ago 535MB
odoo 11.0 ac8c1f2da96a 11 days ago 1.07GB
odoo 12.0 a914ad271b31 11 days ago 1.15GB
<none> <none> 687217ff7424 2 weeks ago 84.1MB
postgres 12 f88dfa384cc4 2 weeks ago 348MB
odoo 10.0 50bfb7575fe2 2 weeks ago 888MB
debian stretch-slim c2f145c34384 2 weeks ago 55.3MB
debian buster-slim 105ec214185d 2 weeks ago 69.2MB
debian latest 8e9f8546050d 2 weeks ago 114MB
busybox latest 19485c79a9bb 2 months ago 1.22MB
shadowsocks/shadowsocks-libev latest 4ae4e89442e8 2 months ago 17.4MB
dpage/pgadmin4 latest 15aebd95450f 3 months ago 237MB
postgres 10 897b33033d64 3 months ago 230MB
postgres 11 53912975086f 3 months ago 312MB
mplatform/mquery latest 0e11d82ddb1d 2 years ago 7.11MB
使用docker compose編排 Odoo
odoo是基于多個(gè)服務(wù),用docker compose 對(duì)這些服務(wù)進(jìn)行編排,會(huì)比較方便。
編寫 docker-compose.yml
編寫 docker-compose.yml 文件,內(nèi)容如下
? odoo10c cat docker-compose.yml
version: '3.3'
services:
# Web Application Service Definition
# --------
#
# All of the information needed to start up an odoo web
# application container.
web:
image: odoo:10.1
depends_on:
- db
- pgadmin
# Port Mapping
# --------
#
# Here we are mapping a port on the host machine (on the left)
# to a port inside of the container (on the right.) The default
# port on Odoo is 8069, so Odoo is running on that port inside
# of the container. But we are going to access it locally on
# our machine from localhost:9000.
ports:
- 9000:8069
# Data Volumes
# --------
#
# This defines files that we are mapping from the host machine
# into the container.
#
# Right now, we are using it to map a configuration file into
# the container and any extra odoo modules.
volumes:
- ./config:/etc/odoo
# - ./addons:/mnt/extra-addons
- ../../git-repo/geely-mts:/mnt/extra-addons
# Odoo Environment Variables
# --------
#
# The odoo image uses a few different environment
# variables when running to connect to the postgres
# database.
#
# Make sure that they are the same as the database user
# defined in the db container environment variables.
environment:
- HOST=db
- USER=odoo
- PASSword=odoo
# Database Container Service Definition
# --------
#
# All of the information needed to start up a postgresql
# container.
db:
image: postgres:11
# Database Environment Variables
# --------
#
# The postgresql image uses a few different environment
# variables when running to create the database. Set the
# username and password of the database user here.
#
# Make sure that they are the same as the database user
# defined in the web container environment variables.
environment:
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- POSTGRES_DB=postgres # Leave this set to postgres
pgadmin:
image: dpage/pgadmin4
depends_on:
- db
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-admin}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
volumes:
- pgadmin:/root/.pgadmin
ports:
- "${PGADMIN_PORT:-5050}:80"
volumes:
pgadmin:
說(shuō)明:
1. 在 Odoo 服務(wù),使用自定義的鏡像,例如 Odoo:10.1
2. 編排了 PG服務(wù)
3. 編排 PGADMIN 方便對(duì)PG 進(jìn)行管理
測(cè)試 docker-compose.yml
使用 docker-compose 啟動(dòng) Odoo, 運(yùn)行命令
? odoo10c docker-compose up
odoo10c_db_1 is up-to-date
odoo10c_pgadmin_1 is up-to-date
Recreating odoo10c_web_1 ... done
Attaching to odoo10c_db_1, odoo10c_pgadmin_1, odoo10c_web_1
pgadmin_1 | NOTE: Configuring authentication for SERVER mode.
pgadmin_1 |
pgadmin_1 | [2019-11-03 13:02:57 +0000] [1] [INFO] Starting gunicorn 19.9.0
pgadmin_1 | [2019-11-03 13:02:57 +0000] [1] [INFO] Listening at: http://[::]:80 (1)
第一次運(yùn)行 docker-compose 時(shí),會(huì)創(chuàng)建相關(guān)的容器,上面的例子顯示更新容器,是因?yàn)槿萜髦耙呀?jīng)創(chuàng)建好。
此時(shí),用瀏覽器訪問 http://127.0.0.1:9000 即可訪問到 Odoo服務(wù) ; 訪問 http://127.0.0.1:5050 即可訪問到 pgadmin
Odoo鏡像說(shuō)明
官方 Odoo鏡像會(huì)在 在 docker-compose.yml 所在目錄建立 2個(gè)目錄,用于掛載到 Odoo容器用做 volume,其中:addons掛載到 /mnt/extra-addons , 以及 config 掛載到 /etc/odoo
Odoo容器默認(rèn)使用 /etc/odoo/odoo.conf 作為配置文件。
所以,1,如果要自定義配置,修改 config/odoo.conf 文件即可,可以從 odoo docker 項(xiàng)目拷貝 原始 配置文件 作為 config/odoo.conf ;2,如果要掛載自定義的ADDONS,掛載到 addons 目錄即可。
Pycharm 調(diào)用 docker compose 遠(yuǎn)程運(yùn)行Odoo
配置pycharm 使用 docker compose
使用 pycharm 將 Odoo 模塊項(xiàng)目導(dǎo)入
在 preference ,選擇 項(xiàng)目解釋器
在項(xiàng)目解釋器, 點(diǎn)擊 ??圖標(biāo),選擇 ADD
在彈窗,選擇 docker compose
在 server 處,選擇 docker 服務(wù)器,或者 新建docker 服務(wù)器。
注意:
如果是 windows平臺(tái),需要 關(guān)閉Docker TLS ,如何關(guān)閉,具體 參考PYcharm官方文檔,或者docker 文檔
在 configuration file 選擇前面建立的服務(wù)編排 docker-compose.yml 文件
在 service 選擇 web。 注意, Pycharm 自動(dòng)識(shí)別出 編排文件包含的所有服務(wù),并且按字母排序
然后,點(diǎn)擊OK 確認(rèn)。
pycharm將會(huì) 去docker容器,偵測(cè)python的版本,完成后,遠(yuǎn)程解釋器將會(huì)配置如下圖所示
使用 遠(yuǎn)程解釋器運(yùn)行 Odoo
建立 開發(fā)專用 Odoo配置
因?yàn)?pycharm 會(huì)將 項(xiàng)目 掛載到 容器的 /opt/project 下,如Odoo默認(rèn)的 extra-addons不同;
所以,需要為 開發(fā)建立一個(gè)專用的 配置文件,例如 config/odoo-dev.conf 。
注意,這個(gè)文件存放在 docker-compose.yml文件目錄
在這個(gè) 文件里面將 addons_path 指向 /opt/project
例如
addons_path = /opt/project
備注:
項(xiàng)目被掛載到 /opt/project 時(shí)由pycharm 生成的 docker compose 所指定
配置 run configuration
在 run 菜單,選擇 edit configuration,在彈窗
在 腳本 輸入 /usr/bin/odoo
在 參數(shù) 輸入 -c /etc/odoo/odoo-dev.conf
在 python 解釋器,選擇 前面建立的 遠(yuǎn)程python
運(yùn)行 Odoo
點(diǎn)擊 run 按鈕,運(yùn)行 Odoo
pycharm將 調(diào)用 docker compose 運(yùn)行Odoo,如圖
轉(zhuǎn)載注明原作者 /by Jeffery