docker部署odoo

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

参考文章:

  1. https://ruterly.com/2019/05/01/Odoo-with-Docker/
  2. https://www.cnblogs.com/qdhxhz/p/9879588.html

这是从未接触过docker,ubuntu16.04 实现部署odoo12社区版的教程。主要介绍内容为:

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

  1. 首先,安装docker
apt-get  install -y docker docker-compose

ubuntu默认用的是国内的镜像,所以下载docker会比较慢,可以更换为阿里的镜像源

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

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

sudo apt-get update
  1. 设置开机自动启动docker
systemctl enable docker
  1. docker的一些常用命令
systemctl start docker # 启动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] #容器操作运维
docker [commit|cp|diff] #容器rootfs命令
docker [login|pull|push|search] #镜像仓库
docker [images|rmi|tag|build|history|save|import] #本地镜像管理
举些栗子:

docker images  #列出当前系统存在的镜像
docker pull image_name  #拉取镜像 (文中image_name为镜像名称)
docker ps #列出所有镜像信息
docker start image_name  #启动某个镜像
docker stop  image_name   #停止某个镜像
docker rm image_name  #移除镜像 (容器必须是停止状态)
docker run -d --name "xiaoxiao" -p 5672:5672 -p 15672:15672 rabbitmq:management#-d 后台运行#-p 端口映射 (可以有多个 因为该镜像可能存在多个端口)#rabbitmq:management  (格式 REPOSITORY:TAG),如果不指定tag,默认使用最新的#--name  给该容器取个名字

docker部署odoo12

以上介绍了docker,现在开始正式部署odoo12。在拉取odoo镜像之前,我们先拉取postgres,简而言之,安装odoo之前安装postgres。
compose是一个用于运行和管理多个容器化应用的工具。
废话不多说。先建立一个docker-compose.yml的文件,内容为:

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 #在终端执行 echo $UID 查看当前用户的 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

启动容器,查看日志:

docker-compose up -d postgres    #启动容器  提示! 使用docker-compose命令要在docker-compose目录下使用
docker-compose ps                #查看容器
docker-compose logs -f           #查看日志

当容器启动成功后,我们可以运行以下命令打开 PostgreSQL,之后创建一个新的数据库用户:

然后添加用户,并赋予创建数据库的权限

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文件添加内容,最后的内容为:
方法一:使用网上的镜像,较方便,方法同上

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

从上可知,我们需要新建一个env,./env/odoo12.env,内容如下:

# 默认要拉取的模块仓库地址
ADDONS_REPO=
# 是否自动拉取关联模块,通过 oca_dependencies.txt 定义
FETCH_OCA_DEPENDENCIES=True
# 宿主机的 UID
TARGET_UID=$UID
# ODOO_ 开头的都是 Odoo 的配置变量,可以自由添加更多的 Odoo 配置变量
ODOO_ADMIN_PASSWD=admin
ODOO_DB_USER=admin   #除postgres以外的数据库用户,需确保已存在此数据库用户,上面步骤我们已建立了admin用户,所以直接用admin用户吧
ODOO_DB_PASSWORD=123456  #admin数据库用户的密码
# ODOO_DBFILTER=odoo_.*    #这是一个数据库的选择过滤规则,odoo_.*的意思是只展示odoo_开头的数据库,不需要的可以注释掉啦

以为就结束了吗?不!我们还需要建立一个Dockerfile文件,路径是./build/odoo12/Dockerfile
我们为 odoo12 指定了 build 的路径,这是因为我们在开发时,可能会在原始的镜像上添加新的库和依赖等,需要通过
Dockerfile 构建适合项目的运行环境
,最简单的 Dockerfile 看起来是这样的:这是Ruter大佬的文章中的解释

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

最后我们可以启动容器啦!!!!

docker-compose up -d odoo12

查看是否启动成功,如下图则表示已经成功启动啦,输入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:

遇到的一些坑

  1. 将自己的模块路径设置到容器里的conf
docker ps  #查看odoo容器的id
docker exec -it id /bin/bash   #通过以上id进入odoo容器
ps -aux | grep odoo  #查看odoo进程


从上已知odoo.conf的位置,进行编辑,添加docker-compose.yml文件里的容器路径即可,/mnt/extra-addons。

最后重启odoo容器就成功把自定义模块的文件让odoo识别到啦!

docker-compose restart odoo12  #重启odoo12容器
  1. 建立数据库用户的时候忘记给创建数据库的权限,创建数据库的时候就会报没有权限创建数据库,给权限即可
alter user admin createdb;
  1. 创建数据库成功,但跳转不了界面,那么就是设置了ODOO_DBFILTER,注释掉即可
  2. 启动不了postgres容器,一直处于restarting的状态,查看日志报错信息为

    查看自己的docker-compose.yml文件,是不是添加了 - /etc/passwd:/etc/passwd:ro,注释掉即可,或者是在宿主机创建一个postgres/123456用户即可,密码自定义,需和docker-compose.yml中的一致。

经历了两天折腾docker,还有一些内容没有完全理解透彻,若有不对的地方,欢迎广大道友指出,谢谢群友的解答以及Ruter大佬的指导。后续更新在个人Harbor服务器上提交镜像。

Docker实现odoo部署相关推荐

  1. Docker容器化部署config-server无法直接访问

    Docker容器化部署config-server无法直接访问 1. 本机ip启动方式: 2. Docker容器启动 1)问题 2)解决办法 - 本机启动 - 服务器启动俩种方式 3. dockerfi ...

  2. 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定

    1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...

  3. docker image name 更改_将前端应用打包成docker镜像并部署?仅需一个脚本就搞定

    1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...

  4. Docker ElK安装部署使用教程

    Docker ElK安装部署使用教程 原文:Docker ElK安装部署使用教程 一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elast ...

  5. jenkins+Docker持续化部署(笔记)

    参考资料:https://www.cnblogs.com/leolztang/p/6934694.html (Jenkins(Docker容器内)使用宿主机的docker命令) https://con ...

  6. docker 部署java_使用Java EE 7,WildFly和Docker进行持续部署–(第1部分)

    docker 部署java 此博客是开始一个新的hanginar(G + 结伴旅游+ webi NAR),将突出解决方案,框架,应用服务器,工具,部署和更多的内容集中在Java EE的系列. 这些不是 ...

  7. 使用Java EE 7,WildFly和Docker进行连续部署–(第1部分)

    此博客是开始一个新的hanginar(G + 结伴旅游+ webi NAR),将突出解决方案,框架,应用服务器,工具,部署和更多的内容集中在Java EE的系列. 这些不是通常的会议风格独白演示,而是 ...

  8. Docker swarm 实战-部署wordpress

    Docker swarm 实战-部署wordpress 创建一个overlay的网络 docker network create -d overlay demo6imq8da3vcwvj2n499k4 ...

  9. Java单机部署,Nacos docker单机模式部署实现过程详解

    Nacos 的部署,我使用的时docker 部署(单机模式 mysql),官网文档:https://nacos.io/zh-cn/docs/quick-start-docker.html 拉取代码: ...

最新文章

  1. 微软 WPC 2014 合作伙伴keynote
  2. C语言: GDB调试技术(一)
  3. 数据平台、大数据平台、数据中台……傻傻分不清?这次终于有人讲明白了!
  4. 二维数组各行求和_数组入门 | 数组的维度和尺寸
  5. 英伟达显卡不同架构_英伟达GeForce RTX 3070 Ti与RTX 3070显卡规格曝光
  6. c+mysql+sslmode_MySQL配置SSL主从复制
  7. windows phone7 学习笔记06——数据绑定
  8. scratch飞机大战图片素材包,值得您的分享!
  9. c# pdf转html,C# 将PDF转为Word、Html、XPS、SVG、PCL、PS——基于Spire.Cloud.PDF
  10. 【NOIP2012-Day2-T2-换教室】
  11. 如何在Linux中删除符号链接?
  12. 三极管开关电路_9012三级管开关电路图大全
  13. 资料:《大学英语》精读第三版(全六册)原文及全文翻译
  14. 迄今见过最好的职业规划文章
  15. MinGW32编译ffmpeg+libsrt
  16. 华为nova3i 计算机在哪里,华为nova3i常见问题汇总,你想了解的都在这里
  17. 学习python-mysql:报错AttributeError: module 'MySQLdb' has no attribute 'cursors'
  18. 小米路由器开启外网访问SSH和WEB管理界面
  19. 中国电信发军医疗器械领域
  20. 童星养成系统的文推荐_几部养成系列的现言宠文推荐啦,都是不错的大叔文,十分治愈哦~...

热门文章

  1. 华北水利水电大学计算机学院,华北水利水电大学数学与信息科学学院
  2. 企业画像在企业活动中的价值
  3. 《穷查理宝典》芒格思维笔记(一)
  4. 工业网关,工业智能网关
  5. 使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图
  6. linux安装图文识别(tesseract)的详细步骤(避坑)
  7. CTF Misc 工具
  8. “联邦云”不是乌托邦
  9. 零zerro世界符号大全pdf_热门抖音文案大全!点赞量超高的句子,总有一句打动你!...
  10. ## 5G远程培训系统-概述