日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker实现odoo部署

發(fā)布時(shí)間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker实现odoo部署 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

docker部署odoo

    • 安裝docker,了解docker和docker-compose的一些常用命令
    • docker部署odoo12
    • 直接拉取鏡像
    • 遇到的一些坑

參考文章:

  • https://ruterly.com/2019/05/01/Odoo-with-Docker/
  • https://www.cnblogs.com/qdhxhz/p/9879588.html
  • 這是從未接觸過docker,ubuntu16.04 實(shí)現(xiàn)部署odoo12社區(qū)版的教程。主要介紹內(nèi)容為:

    安裝docker,了解docker和docker-compose的一些常用命令

  • 首先,安裝docker
  • apt-get install -y docker docker-compose

    ubuntu默認(rèn)用的是國內(nèi)的鏡像,所以下載docker會比較慢,可以更換為阿里的鏡像源

    cd /etc/apt sudo cp sources.list sources.list.bak sudo vim sources.list

    阿里云源為http://mirrors.aliyun.com/ubuntu/
    修改所有的下載源后更新配置即可。

    sudo apt-get update
  • 設(shè)置開機(jī)自動(dòng)啟動(dòng)docker
  • systemctl enable docker
  • docker的一些常用命令
  • systemctl start docker # 啟動(dòng)docker systemctl restart docker # 重啟dokcer docker ps # 查看所有容器

    docker [run|start|stop|restart|kill|rm|pause|unpause] #容器生命周期管理
    docker [ps|inspect|top|attach|events|logs|wait|export|port] #容器操作運(yùn)維
    docker [commit|cp|diff] #容器rootfs命令
    docker [login|pull|push|search] #鏡像倉庫
    docker [images|rmi|tag|build|history|save|import] #本地鏡像管理
    舉些栗子:

    docker images #列出當(dāng)前系統(tǒng)存在的鏡像 docker pull image_name #拉取鏡像 (文中image_name為鏡像名稱) docker ps #列出所有鏡像信息 docker start image_name #啟動(dòng)某個(gè)鏡像 docker stop image_name #停止某個(gè)鏡像 docker rm image_name #移除鏡像 (容器必須是停止?fàn)顟B(tài)) docker run -d --name "xiaoxiao" -p 5672:5672 -p 15672:15672 rabbitmq:management#-d 后臺運(yùn)行#-p 端口映射 (可以有多個(gè) 因?yàn)樵撶R像可能存在多個(gè)端口)#rabbitmq:management (格式 REPOSITORY:TAG),如果不指定tag,默認(rèn)使用最新的#--name 給該容器取個(gè)名字

    docker部署odoo12

    以上介紹了docker,現(xiàn)在開始正式部署odoo12。在拉取odoo鏡像之前,我們先拉取postgres,簡而言之,安裝odoo之前安裝postgres。
    compose是一個(gè)用于運(yùn)行和管理多個(gè)容器化應(yīng)用的工具。
    廢話不多說。先建立一個(gè)docker-compose.yml的文件,內(nèi)容為:

    version: '2.0' services:postgres:image: postgres:9.5ports: - "5432:5432" volumes:- ./volumes/postgres:/var/lib/postgresql/9.5/dataenvironment:# psql 用戶- POSTGRES_USER=postgres# psql 密碼,自定義- POSTGRES_PASSWORD=123456user: $UID:$UID #在終端執(zhí)行 echo $UID 查看當(dāng)前用戶的 UID,并將 $UID 替換為該值restart: always

    以下是postgresql和postgis的配置:

    version: '2.0' services:postgres:image: kartoza/postgis:9.6-2.4# build: kartoza/postgis:9.6-2.4ports:- "5432:5432"volumes:- ./volumes/postgres:/var/lib/postgresql/9.5/dataenvironment:# psql 用戶- POSTGRES_USER=postgres# psql 密碼- POSTGRES_PASSWORD=123456user: 0:0restart: always

    啟動(dòng)容器,查看日志:

    docker-compose up -d postgres #啟動(dòng)容器 提示! 使用docker-compose命令要在docker-compose目錄下使用 docker-compose ps #查看容器 docker-compose logs -f #查看日志

    當(dāng)容器啟動(dòng)成功后,我們可以運(yùn)行以下命令打開 PostgreSQL,之后創(chuàng)建一個(gè)新的數(shù)據(jù)庫用戶:

    然后添加用戶,并賦予創(chuàng)建數(shù)據(jù)庫的權(quán)限

    postgres=# CREATE user admin WITH password '123456'; #odoo/123456,用戶密碼自定義。。。。 CREATE ROLE postgres=# ALTER user admin WITH createdb; ALTER ROLE postgres=#

    退出容器

    exit

    接下來建立odoo12的容器,即在原來的docker-compose.yml文件添加內(nèi)容,最后的內(nèi)容為:
    方法一:使用網(wǎng)上的鏡像,較方便,方法同上

    version: '2.0' services:postgres:image: postgres:9.5ports:- "5432:5432" volumes:- ./volumes/postgres:/var/lib/postgresql/9.5/dataenvironment:# psql 用戶- POSTGRES_USER=postgres# psql 密碼- POSTGRES_PASSWORD=123456user: 0:0restart: alwaysodoo12:image: odoo:12.0command: startports:- "8069:8069"- 127.0.0.1:8072:8072links:- postgres:dbvolumes:- ./volumes/odoo12/additional_addons:/opt/odoo/additional_addons- ./volumes/odoo12/addons:/opt/odoo/sources/odoo/addons- ./volumes/odoo12/filestore:/opt/odoo/data/filestore- ./volumes/odoo12/sessions:/opt/odoo/data/sessions- ./volumes/odoo12/ssh:/opt/odoo/ssh:ro- ./volumes/odoo12/myaddons:/mnt/extra-addons #這是放自定義模塊的文件夾env_file:- ./env/odoo12.envrestart: always

    方法二:自己重新制作鏡像

    version: '2.0' services:postgres:image: postgres:9.5ports:- "5432:5432" volumes:- ./volumes/postgres:/var/lib/postgresql/9.5/dataenvironment:# psql 用戶- POSTGRES_USER=postgres# psql 密碼- POSTGRES_PASSWORD=123456user: 0:0restart: alwaysodoo12:build: ./build/odoo12command: startports:- "8069:8069"- 127.0.0.1:8072:8072links:- postgres:dbvolumes:- ./volumes/odoo12/additional_addons:/opt/odoo/additional_addons- ./volumes/odoo12/addons:/opt/odoo/sources/odoo/addons- ./volumes/odoo12/filestore:/opt/odoo/data/filestore- ./volumes/odoo12/sessions:/opt/odoo/data/sessions- ./volumes/odoo12/ssh:/opt/odoo/ssh:ro- ./volumes/odoo12/myaddons:/mnt/extra-addons #這是放自定義模塊的文件夾env_file:- ./env/odoo12.envrestart: always

    從上可知,我們需要新建一個(gè)env,./env/odoo12.env,內(nèi)容如下:

    # 默認(rèn)要拉取的模塊倉庫地址 ADDONS_REPO= # 是否自動(dòng)拉取關(guān)聯(lián)模塊,通過 oca_dependencies.txt 定義 FETCH_OCA_DEPENDENCIES=True # 宿主機(jī)的 UID TARGET_UID=$UID # ODOO_ 開頭的都是 Odoo 的配置變量,可以自由添加更多的 Odoo 配置變量 ODOO_ADMIN_PASSWD=admin ODOO_DB_USER=admin #除postgres以外的數(shù)據(jù)庫用戶,需確保已存在此數(shù)據(jù)庫用戶,上面步驟我們已建立了admin用戶,所以直接用admin用戶吧 ODOO_DB_PASSWORD=123456 #admin數(shù)據(jù)庫用戶的密碼 # ODOO_DBFILTER=odoo_.* #這是一個(gè)數(shù)據(jù)庫的選擇過濾規(guī)則,odoo_.*的意思是只展示odoo_開頭的數(shù)據(jù)庫,不需要的可以注釋掉啦

    以為就結(jié)束了嗎?不!我們還需要建立一個(gè)Dockerfile文件,路徑是./build/odoo12/Dockerfile
    我們?yōu)?odoo12 指定了 build 的路徑,這是因?yàn)槲覀冊陂_發(fā)時(shí),可能會在原始的鏡像上添加新的庫和依賴等,需要通過
    Dockerfile 構(gòu)建適合項(xiàng)目的運(yùn)行環(huán)境
    ,最簡單的 Dockerfile 看起來是這樣的:這是Ruter大佬的文章中的解釋

    FROM elicocorp/odoo:12.0 MAINTAINER Elico Corp <webmaster@elico-corp.com>

    最后我們可以啟動(dòng)容器啦!!!!

    docker-compose up -d odoo12

    查看是否啟動(dòng)成功,如下圖則表示已經(jīng)成功啟動(dòng)啦,輸入ip地址加8069端口就可以訪問啦~~

    直接拉取鏡像

    要是有鏡像或者是有自己的私有倉庫,可以直接用image,然后方式鏡像地址名稱tag,如下,這樣就不用像上面一樣新建./env/odoo12.env和Dockerfile文件了。

    version: '2.0' services:postgres:image: kartoza/postgis:9.6-2.4# build: kartoza/postgis:9.6-2.4ports:- "5432:5432"volumes:- ./volumes/postgres:/var/lib/postgresql/9.5/dataenvironment:# psql 用戶- POSTGRES_USER=postgres# psql 密碼- POSTGRES_PASSWORD=123456user: 0:0restart: alwaysodoo12:image: 10.10.1.83/odoo/odoo12:v1.0.0command: startports:- "8069:8069"- 127.0.0.1:8072:8072links:

    遇到的一些坑

  • 將自己的模塊路徑設(shè)置到容器里的conf
  • docker ps #查看odoo容器的id docker exec -it id /bin/bash #通過以上id進(jìn)入odoo容器 ps -aux | grep odoo #查看odoo進(jìn)程


    從上已知odoo.conf的位置,進(jìn)行編輯,添加docker-compose.yml文件里的容器路徑即可,/mnt/extra-addons。

    最后重啟odoo容器就成功把自定義模塊的文件讓odoo識別到啦!

    docker-compose restart odoo12 #重啟odoo12容器
  • 建立數(shù)據(jù)庫用戶的時(shí)候忘記給創(chuàng)建數(shù)據(jù)庫的權(quán)限,創(chuàng)建數(shù)據(jù)庫的時(shí)候就會報(bào)沒有權(quán)限創(chuàng)建數(shù)據(jù)庫,給權(quán)限即可
  • alter user admin createdb;
  • 創(chuàng)建數(shù)據(jù)庫成功,但跳轉(zhuǎn)不了界面,那么就是設(shè)置了ODOO_DBFILTER,注釋掉即可
  • 啟動(dòng)不了postgres容器,一直處于restarting的狀態(tài),查看日志報(bào)錯(cuò)信息為

    查看自己的docker-compose.yml文件,是不是添加了 - /etc/passwd:/etc/passwd:ro,注釋掉即可,或者是在宿主機(jī)創(chuàng)建一個(gè)postgres/123456用戶即可,密碼自定義,需和docker-compose.yml中的一致。
  • 經(jīng)歷了兩天折騰docker,還有一些內(nèi)容沒有完全理解透徹,若有不對的地方,歡迎廣大道友指出,謝謝群友的解答以及Ruter大佬的指導(dǎo)。后續(xù)更新在個(gè)人Harbor服務(wù)器上提交鏡像。

    總結(jié)

    以上是生活随笔為你收集整理的Docker实现odoo部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。