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. Ubuntu Linux虚拟机与windows快速创建共享文件夹

    有时候我们需要在windows下与远程Linux服务器传输文件,之前使用pscp传输文件很方便,但不方便传输多文件,同时也不便于查看.看了网上的教程总结创建共享文件夹的流程: 1.首先在本地windo ...

  2. 成熟度等级CMM

    软件能力成熟度模型 (Capability maturity model,CMM) CMM是目前国际上使用流行的一种软件生产过程行业标准模型,可定义.评价软件开发过程的成熟度,并提供提高软件质量的指导 ...

  3. ajax 页面无刷新

    <!-- 使用原生Ajax 和 $.ajax 实现局部刷新的过程 --><!-- 封装通用XMLHttpRequest对象 --><!DOCTYPE html>&l ...

  4. 路由器配置——基于区域的OSPF,MD5认证

    一.实验目的:掌握OSPF基于区域的MD5认证 二.拓扑图: 三.具体步骤配置 (1)R1路由器配置 Router>enable Router#configure terminal Enter ...

  5. APIO2009 抢掠计划 Tarjan DAG-DP

    APIO2009 抢掠计划 Tarjan spfa/DAG-DP 题面 一道\(Tarjan\)缩点水题.因为可以反复经过节点,所以把一个联通快中的所有路口看做一个整体,缩点后直接跑\(spfa\)或 ...

  6. 异步时钟FIFO(一)

    FIFO一般用于通过两个不同时钟域的数据传输.一个水池有进和出两个通道,由于进出口水流不一致所以需要水池加以缓冲.堆栈也是相当于水池的作用.如果输入端不是连续的数据流,可以通过堆栈来调节使数据以稳定的 ...

  7. CF1140F Extending Set of Points 【按时间分治,并查集】

    题目链接:洛谷 首先我们考虑没有撤回操作的情况,就是将每一行和每一列看做一个点(代表行的称为白点,代表列的称为黑点),每个点$(x,y)$看做一条边. Extend操作实际上就是$x_1$行与$y_1 ...

  8. 报错 One or more constraints have not been satisfied.

    常出现在导入已有标签时. 需要在<build/><plugins/>里面追加标签 <plugin> <groupId>org.apache.maven. ...

  9. Shell基础之四 变量与运算

    shell变量与运算 变量存在于内存中.假设变量str,设置或修改变量属性时,不带$号,只有引用变量的值时才使用$号.也就是说在内存中,标记变量的变量名称是str,而不是$str. 变量数据的存储方式 ...

  10. [题解] [HEOI2013] Segment

    题面 题解 李超线段树 为了与机房大佬 HYJ 同步伐 学习笔记请移步 yyb的博客 Code #include <algorithm> #include <iostream> ...