Docker实现odoo部署
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 实现部署odoo12社区版的教程。主要介绍内容为:
安装docker,了解docker和docker-compose的一些常用命令
- 首先,安装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
- 设置开机自动启动docker
systemctl enable docker
- 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:
遇到的一些坑
- 将自己的模块路径设置到容器里的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容器
- 建立数据库用户的时候忘记给创建数据库的权限,创建数据库的时候就会报没有权限创建数据库,给权限即可
alter user admin createdb;
- 创建数据库成功,但跳转不了界面,那么就是设置了ODOO_DBFILTER,注释掉即可
- 启动不了postgres容器,一直处于restarting的状态,查看日志报错信息为
查看自己的docker-compose.yml文件,是不是添加了 - /etc/passwd:/etc/passwd:ro,注释掉即可,或者是在宿主机创建一个postgres/123456用户即可,密码自定义,需和docker-compose.yml中的一致。
经历了两天折腾docker,还有一些内容没有完全理解透彻,若有不对的地方,欢迎广大道友指出,谢谢群友的解答以及Ruter大佬的指导。后续更新在个人Harbor服务器上提交镜像。
Docker实现odoo部署相关推荐
- Docker容器化部署config-server无法直接访问
Docker容器化部署config-server无法直接访问 1. 本机ip启动方式: 2. Docker容器启动 1)问题 2)解决办法 - 本机启动 - 服务器启动俩种方式 3. dockerfi ...
- 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定
1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...
- docker image name 更改_将前端应用打包成docker镜像并部署?仅需一个脚本就搞定
1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...
- Docker ElK安装部署使用教程
Docker ElK安装部署使用教程 原文:Docker ElK安装部署使用教程 一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elast ...
- jenkins+Docker持续化部署(笔记)
参考资料:https://www.cnblogs.com/leolztang/p/6934694.html (Jenkins(Docker容器内)使用宿主机的docker命令) https://con ...
- docker 部署java_使用Java EE 7,WildFly和Docker进行持续部署–(第1部分)
docker 部署java 此博客是开始一个新的hanginar(G + 结伴旅游+ webi NAR),将突出解决方案,框架,应用服务器,工具,部署和更多的内容集中在Java EE的系列. 这些不是 ...
- 使用Java EE 7,WildFly和Docker进行连续部署–(第1部分)
此博客是开始一个新的hanginar(G + 结伴旅游+ webi NAR),将突出解决方案,框架,应用服务器,工具,部署和更多的内容集中在Java EE的系列. 这些不是通常的会议风格独白演示,而是 ...
- Docker swarm 实战-部署wordpress
Docker swarm 实战-部署wordpress 创建一个overlay的网络 docker network create -d overlay demo6imq8da3vcwvj2n499k4 ...
- Java单机部署,Nacos docker单机模式部署实现过程详解
Nacos 的部署,我使用的时docker 部署(单机模式 mysql),官网文档:https://nacos.io/zh-cn/docs/quick-start-docker.html 拉取代码: ...
最新文章
- 微软 WPC 2014 合作伙伴keynote
- C语言: GDB调试技术(一)
- 数据平台、大数据平台、数据中台……傻傻分不清?这次终于有人讲明白了!
- 二维数组各行求和_数组入门 | 数组的维度和尺寸
- 英伟达显卡不同架构_英伟达GeForce RTX 3070 Ti与RTX 3070显卡规格曝光
- c+mysql+sslmode_MySQL配置SSL主从复制
- windows phone7 学习笔记06——数据绑定
- scratch飞机大战图片素材包,值得您的分享!
- c# pdf转html,C# 将PDF转为Word、Html、XPS、SVG、PCL、PS——基于Spire.Cloud.PDF
- 【NOIP2012-Day2-T2-换教室】
- 如何在Linux中删除符号链接?
- 三极管开关电路_9012三级管开关电路图大全
- 资料:《大学英语》精读第三版(全六册)原文及全文翻译
- 迄今见过最好的职业规划文章
- MinGW32编译ffmpeg+libsrt
- 华为nova3i 计算机在哪里,华为nova3i常见问题汇总,你想了解的都在这里
- 学习python-mysql:报错AttributeError: module 'MySQLdb' has no attribute 'cursors'
- 小米路由器开启外网访问SSH和WEB管理界面
- 中国电信发军医疗器械领域
- 童星养成系统的文推荐_几部养成系列的现言宠文推荐啦,都是不错的大叔文,十分治愈哦~...
热门文章
- 华北水利水电大学计算机学院,华北水利水电大学数学与信息科学学院
- 企业画像在企业活动中的价值
- 《穷查理宝典》芒格思维笔记(一)
- 工业网关,工业智能网关
- 使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图
- linux安装图文识别(tesseract)的详细步骤(避坑)
- CTF Misc 工具
- “联邦云”不是乌托邦
- 零zerro世界符号大全pdf_热门抖音文案大全!点赞量超高的句子,总有一句打动你!...
- ## 5G远程培训系统-概述