2019日 星期一

安装docker

windows系统,参考 docker官方文档

Mac系统,参考 docker官方文档

构建自定义ODOO镜像

标准ODOO镜像可能不包含特别的python模块,或者Linux工具,此时需要 自定义 Odoo镜像

dockerfile

编写dockerfile,例如加入需要的python库

  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"]

说明: 上面的自定义镜像,是在Odoo10 基础上,安装了 pypinyin 模块,为了使用本地pip镜像,例如 pip.conf 内容

  10.1 git:(master) cat pip.conf

[global]

index-url=http://mirrors.aliyun.com/pypi/simple/

[install]

trusted-host=mirrors.aliyun.com

构建镜像

基于dockerfile构建镜像

  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

这样,就会建立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是基于多个服务,用docker compose 对这些服务进行编排,会比较方便。

编写 docker-compose.yml

编写 docker-compose.yml 文件,内容如下

  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:

说明:

1.       在 Odoo 服务,使用自定义的镜像,例如 Odoo:10.1

2.       编排了 PG服务

3.       编排 PGADMIN 方便对PG
进行管理

测试 docker-compose.yml

使用 docker-compose 启动 Odoo, 运行命令

  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)

第一次运行 docker-compose 时,会创建相关的容器,上面的例子显示更新容器,是因为容器之前已经创建好。

此时,用浏览器访问  http://127.0.0.1:9000
即可访问到 Odoo服务 ; 访问  http://127.0.0.1:5050
即可访问到 pgadmin

 Odoo镜像说明

个目录,用于挂载到 Odoo容器用做 volume,其中:addons挂载到 /mnt/extra-addons , 以及  config 挂载到 /etc/odoo

Odoo容器默认使用 /etc/odoo/odoo.conf 作为配置文件。

,如果要自定义配置,修改 config/odoo.conf 文件即可,可以从 odoo docker 项目拷贝 原始 配置文件 作为 config/odoo.conf  ;2,如果要挂载自定义的ADDONS,挂载到 addons 目录即可。

Pycharm 调用 docker compose 远程运行Odoo

配置pycharm 使用 docker compose

使用 pycharm 将 Odoo 模块项目导入

在 preference ,选择 项目解释器

在项目解释器, 点击 ⚙️图标,选择 ADD

在弹窗,选择 docker compose

在 server 处,选择 docker 服务器,或者 新建docker 服务器。

注意:

如果是 windows平台,需要 关闭Docker  TLS ,如何关闭,具体 参考PYcharm官方文档,或者docker
文档

在 configuration file 选择前面建立的服务编排  docker-compose.yml
文件

在 service 选择 web。  注意, Pycharm 自动识别出
编排文件包含的所有服务,并且按字母排序

然后,点击OK 确认。

pycharm将会 去docker容器,侦测python的版本,完成后,远程解释器将会配置如下图所示

使用 远程解释器运行 Odoo

 建立 开发专用 Odoo配置

因为 pycharm
会将 项目 挂载到 容器的 /opt/project 下,如Odoo默认的 extra-addons不同;

所以,需要为 开发建立一个专用的 配置文件,例如  config/odoo-dev.conf

注意,这个文件存放在 docker-compose.yml文件目录

在这个 文件里面将   addons_path 指向  /opt/project

例如

addons_path = /opt/project

备注:

项目被挂载到 /opt/project 时由pycharm 生成的 docker compose 所指定

 配置 run configuration

在 run 菜单,选择 edit configuration,在弹窗

在 脚本 输入  /usr/bin/odoo

在 参数 输入 -c /etc/odoo/odoo-dev.conf

在 python 解释器,选择 前面建立的 远程python

运行 Odoo

点击 run  按钮,运行 Odoo

pycharm将 调用 docker compose 运行Odoo,如图

使用 pycharm调试docker环境运行的Odoo的更多相关文章

  1. macOS 下 PHPStorm + Xdebug 调试 Docker 环境中的代码

    0x00 描述 宿主机是 mac mini,构建的项目在 docker 中,所以需要在 PHPStorm 上配置 Xdebug 进行远程代码调试. 0x01 环境 宿主机:macOS High Sie ...

  2. ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?

    为什么需要ARM架构下的OpenJDK8的Docker镜像? 对现有的Java应用,之前一直运行在x86处理器环境下,编译和运行都是JDK8,如今在树莓派的Docker环境运行(或者其他ARM架构电脑 ...

  3. Docker环境下运行python+selenium+chrome

    Docker环境下运行python+selenium+chrome docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将docker与selenium结合实现 ...

  4. pycharm中新建并且运行django

    1.对于Bottle框架其本身未实现类似于Tornado自己基于socket实现Web服务,所以必须依赖WSGI,默认Bottle已经实现并且支持的WSGI有: 帮助我们写socket的server. ...

  5. Docker环境下eShopOnContainers部署

    从头开始学eShopOnContainers--Visual Studio 2017环境配置 https://www.cnblogs.com/dusthunter/p/9973815.html 一.安 ...

  6. 如何用 pycharm 调试 airflow

    airflow 和 pycharm 相关基础知识请看其他博客 我们在使用 airflow的 dag时. 每次写完不知道对不对的,总不能到页面环境中跑一下,等到报错再调试吧.这是很让人恼火的事情 这里我 ...

  7. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  8. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  9. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

随机推荐

  1. MySQL之InnoDB索引面试学习笔记

    写在前面 想要做好后台开发,终究是绕不过索引这一关的.先问自己一个问题,InnoDB为什么选择B+树作为默认索引结构.本文主要参考MySQL索引背后的数据结构及算法原理和剖析Mysql的InnoDB索 ...

  2. Mac: ld: library not found for -lgcc_s.10.4

    Mac: ld: library not found for -lgcc_s.10.4   Checking for cc... ld: library not found for -lgcc_s.1 ...

  3. java 下拉控件 转自 http://www.cnblogs.com/lhb25/p/form-enhanced-with-javascript-three.html

    表单元素让人爱恨交加.作为网页最重要的组成部分,表单几乎无处不在,从简单的邮件订阅.登陆注册到复杂的需要多页填写的信息提交功能,表单都让开发者花费了大量的时间和精力去处理,以期实现好用又漂亮的表单功能 ...

  4. LNOI2018 劈配

    主要思路为连反向边. 对于本题,贪心策略,依次决定每个人的最优解 但因为每人达到的最优解可能有多种方式,如果每个都尝试就会超时,所以只能先采取其中一种 并将这个方案连反向边,其它方案连正向边 这样对于 ...

  5. 018_linux驱动之_阻塞和非阻塞

    阻塞操作     是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作. 被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足.   非阻塞操作   进程 ...

  6. MySQL组提交(group commit)

    MySQL组提交(group commit) 前提: 以下讨论的前提 是设置MySQL的crash safe相关参数为双1: sync_binlog=1 innodb_flush_log_at_trx ...

  7. seq2seq聊天模型(二)——Scheduled Sampling

    使用典型seq2seq模型,得到的结果欠佳,怎么解决 结果欠佳原因在这里 在训练阶段的decoder,是将目标样本["吃","兰州","拉面" ...

  8. 数据结构实验之二叉树二:遍历二叉树 SDUT 3341

    #include <bits/stdc++.h> using namespace std; struct Tree { char data; struct Tree *right; str ...

  9. Python3操作YAML文件

    数据及配置文件之争 数据及文件通常有三种类型: 配置文件型:如ini,conf,properties文件,适合存储简单变量和配置项,最多支持两层,不适合存储多层嵌套数据 表格矩阵型:如csv,exce ...

  10. Flask-第三方插件

    Flask-Session 因为flask自带的session是将session存在cookie中: 所以才有了第三方Flask_session插件,可以将session存储在我们想存储的数据库中(r ...