ODOO随笔(一)—— Odoo 16的docker部署以及vscode环境配置

news2024/12/23 13:06:27

之前一直使用Odoo源码配置开发环境,安装的步骤比较多,费时。趁着升级到16版本的机会,尝试使用docker快速配置Odoo的VSCode开发环境。

1 系统环境

(1)操作系统:ubuntu 20.04  Alternative downloads | Ubuntu

(2)集成开发工具:vscode   Visual Studio Code - Code Editing. Redefined

2 docker安装

如果之前未安装docker,终端会提示:

Command 'docker' not found, but can be installed with:

sudo snap install docker     # version 20.10.17, or
sudo apt  install docker.io  # version 20.10.21-0ubuntu1~20.04.2

See 'snap info docker' for additional versions.
(1)安装docker,在终端输入:sudo apt install docker.io

(2)检查安装是否成功:sudo docker -v

输出版本信息则表示正常安装。

3 镜像拉取

(1)拉取Odoo镜像:sudo docker pull odoo:16.0

(2)拉取Postgres镜像:sudo docker pull postgres:15.0

(3)查看镜像拉取结果:sudo docker images

4 启动容器

(1)启动Postgres容器:sudo docker run -d -p 5432:5432 -e POSTGRES_USER=odoo16 -e POSTGRES_PASSWORD=odoo16 -e POSTGRES_DB=postgres --name odoo16 postgres:15.0

(2)启动Odoo容器:sudo docker run -d -p 8069:8069 --name odoo16_app --link odoo16:db -t odoo:16.0

(数据库名、用户名、密码、端口等可按需更改)

在浏览器输入127.0.0.1:8069,就可以看到熟悉的Odoo页面了。

5 VSCode连接容器

(1)修改用户权限

sudo chmod o+rw /var/run/docker.sock

sudo groupadd docker

sudo gpasswd -a $USER docker

newgrp docker

(2)安装docker插件:vscode扩展里,搜索“docker“。安装,侧边栏出现容器图标。

在第一步事先修改了用户权限,所不会出现vscode没有权限访问容器的错误了。

通过docker插件,attach操作后可以远程查看containers和images信息。

此时odoo16和postgres15容器尚未启动,红色方框图标。

鼠标在容器名上右键选择启动(先postgres,后odoo)。顺利启动后容器的红色停止图标变成了绿色三角图标。

6 查看odoo运行日志及脚手架创建自定义模块

(1)查看odoo运行日志

在docker插件的odoo图标上,右键选择“View Logs”,在VSCode的终端可以看到当前Odoo容器的运行日志。

(2) 脚手架创建自定义模块

 在docker插件的odoo图标上,右键选择“Attach Shell”,可以进入Odoo容器的终端。

配置文件在容器中的位置是/etc/odoo/odoo.conf,可通过插件在树状结构中查看 (官方odoo镜像没有安装vim\nano等工具)。

可以发现,自定义模块在/mnt/extra-addons目录下。

 切换到模块目录,Odoo容器终端: cd /mnt/extra-addons

 

创建自定义模块,Odoo容器终端: odoo scaffold firstmodule

当前文件夹出现firstmodule模块。

 开发者模式,更新,在应用中检索到“firstmodule”。

到此,环境配置完毕,可以自由玩耍了。

7 小结

这次使用docker配置odoo环境,在VSCode配置上卡了半天,没找到比较匹配直观的教程,记录下过程供今后使用。在走通第一遍后,效率大幅提高,五分种可以搞定,而以往源码方式的配置需要花费半个小时以上,且将来可很方便部署到生产环境。

有些不习惯的是,之前用源码部署配置方式,各类配置文件在哪个目录下可以在源码中快速找到,同时也可以查看自带的模块的代码。现在使用容器方式,目录结构就不同了,也看不到源码,心中有种空荡荡的不踏实的感觉。

8 一些补充

(1)在“docker”插件的基础上,安装“dev container”,可以更方便新增、修改、删除容器文件,就像本机操作文件一样。

(2)dev container插件进入终端,提示“终端进程“/usr/sbin/nologin”启动失败(退出代码: 1)”问题

 vscode的文件--首选项--设置,搜索“terminal.integrated.shell”,将default profile:linux改为“bash”


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/606623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高完整性系统(1)Introduction

文章目录 什么是 formal methods案例1:造影机器案例2: 特斯拉汽车的自动驾驶功能案例3:空客 320案例4:波音737 什么是 formal methods “Formal methods” 是计算机科学中的一个术语,它指的是一种使用数学模型和技术来…

chatgpt赋能python:Python匹配空格

Python匹配空格 在Python中,空格是一个常见的字符,在字符串和文本处理中非常常见。但是,在某些情况下,我们需要匹配字符串中的空格,这个时候就需要使用Python匹配空格。 什么是Python匹配空格? Python匹…

皮卡丘反射型XSS

1.反射型xss(get) 进入反射型xss(get)的关卡,我们可以看到如下页面 先输入合法数据查看情况,例如输入“kobe” 再随便输入一个,比如我舍友的外号“xunlei”,“666”,嘿嘿嘿 F12查看源代码,发现你输入的数…

【5.29 代随_41day】 整数拆分、不同的二叉搜索树

整数拆分、不同的二叉搜索树 整数拆分1.动态规划的方法图解步骤代码 不同的二叉搜索树图解步骤代码 整数拆分 力扣连接:343. 整数拆分(中等) 1.动态规划的方法 确定dp数组(dp table)以及下标的含义 dp[i]&#xff1a…

redis第四章-redis下redisson分布式锁原理和源码分析

如上图,在最简单使用分布式锁的时候,我们一般获取一个锁对象,对这个对象进行加锁,当执行完业务流程代码后,对分布式锁进行解锁,这样就保证了高并发下程序的锁安全,以及原子性。 如图&#xff0c…

Linux 实验三 Linux C开发工具的使用

做实验之前必须会vim的简单使用 会使用vi 进入文件 i 插入 esc进入底行模式 :wq退出 1、vi编辑器和gcc编译器的简单使用 (1)在用户主目录下新建一个目必须掌握录,命名为vifile (2)进入目录vifile (3&…

LearnOpenGL-高级OpenGL-10.实例化

本人初学者,文中定有代码、术语等错误,欢迎指正 文章目录 实例化例子1.1:100个2D四边形使用Uniform 实例化数组例子1.2:100个2D四边形使用实例化数组例子2.1:行星带不使用实例化数组例子2.2:行星带使用实例…

【转码】nohup后台执行ffmpeg转码后推流srs

【ffmpeg】flv1转码h264且降低分辨率 【ffmpeg】filter_complex 转码视频保留音频推直播flv流 拉流播放剪辑到2M mp4 转flv 同时转码,拉流地址:http://1.1.1.5:8078/live/streamLow.flv 过了三个月,忘了。通过查询后台程序,判断当时自己是用的哪个脚本:看下上次操作的时间…

MySQL简单教程

MySQL的数据类型 类型用途int整型,相当于java的intbigint整型,相当于java的longfloat浮点型double浮点型datetime日期类型timestamp日期类型(可存储时间戳)char定长字符varchar不定长字符text大文本,用于存储很长的…

皮卡丘xss之盲打、xss之过滤

1.xss之盲打 我们先按照题目输入 提交后&#xff0c;很平常 再试试插入payload&#xff1a;<script>alert(1)</script>和<script>alert(2)</script> 提交后还是不变 此时我们看提示 我们尝试访问该地址&#xff1a;127.0.0.1/pk/vul/xss/xssblind/ad…

聊聊Scrum价值观与测试启发

这是鼎叔的第六十二篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》&#xff0c;星标收藏&#xff0c;大量原创思考文章陆续推出。 敏捷理论博大精深&#xff0c;相关实践方法论和工具层出不穷&#xff0c;各大公司都有特…

从零开始学习JVM(六)-直接内存和执行引擎

1 直接内存介绍 直接内存不是虚拟机运行时数据区的一部分&#xff0c;也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存空间。直接内存来源于NIO&#xff0c;通过存在堆中的DirectByteBuffer操作Native内存。通常访问直接内存的速度会…

Stable Diffusion教程

什么是Stable Diffusion Stable Diffusion是一种潜在扩散模型&#xff08;Latent Diffusion Model&#xff09;&#xff0c;能够从文本描述中生成详细的图像。它还可以用于图像修复、图像绘制、文本到图像和图像到图像等任务。简单地说&#xff0c;我们只要给出想要的图片的文…

RK3588平台开发系列讲解(网络篇)本地套接字

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、本地套接字是什么二、本地字节流套接字 服务器三、本地字节流套接字 客户端沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本地套接字是 IPC,也就是本地进程间通信的一种实现方式。除了本地套接字以外,…

皮卡丘Unsafe Filedownload

1.不安全的文件下载概述 文件下载功能在很多web系统上都会出现&#xff0c;一般我们当点击下载链接&#xff0c;便会向后台发送一个下载请求&#xff0c;一般这个请求会包含一个需要下载的文件名称&#xff0c;后台在收到请求后 会开始执行下载代码&#xff0c;将该文件名对应…

旧改快讯--桑泰南山桃源“工改商住”项目规划修改

南山区桃源街道西丽同富裕工业城城市更新单元原列入《2019年深圳市南山区城市更新单元计划第一批计划》&#xff0c;后进行更新方向调整&#xff0c;列入《2020年深圳市南山区城市更新单元计划第三批计划》&#xff0c;2022年8月发布实施主体公示&#xff0c;实施主体为深圳市桑…

chatgpt赋能python:Python到底是一个SEO友好的选择吗?

Python到底是一个SEO友好的选择吗&#xff1f; 随着Python成为越来越受欢迎的编程语言&#xff0c;人们开始担心它是否适用于SEO。因为SEO是一项关键性能指标&#xff0c;因此希望了解Python是否确实是适用于这一目标。 Python的SEO优缺点 首先&#xff0c;Python确实具有一…

shell编程之循环语句与函数

文章目录 一.shell函数1.作用2.使用函数的优势3.shell函数定义3.1方式1&#xff1a;3.2方式2&#xff1a; 4.调用函数的方法5.函数返回值5.1 return5.2 exit 6.1-100奇偶求和相加 二.函数传参1.含义2.函数传参的方式 三.函数变量的作用范围1.函数变量的作用范围2.调用函数2.1示…

什么蓝牙耳机戴着舒服,介绍几款佩戴舒适的骨传导蓝牙耳机

骨传导耳机是一种新式的耳机&#xff0c;与常规听歌的入耳式耳机相比&#xff0c;不需要将耳机塞住的耳道&#xff0c;在长时间佩戴时不会损伤听觉。能听声音不需要入耳&#xff0c;在户外运动时能及时听到环境音&#xff0c;避免安全隐患。现在市场上有骨传导。以下是一些骨传…

解决message(antd-design组件库)弹窗多次数出现的问题

当我们多次点击按钮的时候&#xff0c;会出现下图这样的情况&#xff1a; 网址&#xff1a; 全局提示 Message - Ant Design 这样看起来&#xff0c;会降低用户的体验。所以&#xff0c;我想要的效果是&#xff0c;点一次出现一次&#xff0c;当我再次点击的时候&#xff0c;会…