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. 洛谷P2114 起床困难综合症【位运算】【贪心】

    题目:https://www.luogu.org/problemnew/show/P2114 题意:有n个操作,每个可以是与.或.异或 一个数. 初始值是0~m之间的一个数,问经过n个运算之后,可以得 ...

  2. adb连接各模拟器端口

    天天模拟器 adb connect 127.0.0.1:6555 网易MuMu adb connect 127.0.0.1:5555

  3. maven+struts2例子

    本文在开发第一个maven示例的基础上进行扩展. 第一个maven示例目录结构如下: 扩展后目录为: 打开pom.xml 在WEB-INF文件夹下新建web.xml: <?xml version ...

  4. python--第四天练习题

    #1.写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者. def rec(a,b,dep=1): c = a + b if dep == 10: return c return ...

  5. 文件描述符、文件表项、V节点表项的一些总结

    转自  http://blog.csdn.net/gzzheyi/article/details/7739556 表格可以参见APUE 第三版 P61. 文件描述符(进程级别): 1).在每个进程表中 ...

  6. 一步一步配置AWS ELB Https证书

    第一步:生成CSR 要配置证书,我们首先需要创建一个CSR来向证书提供商申请证书.这个过程我们可以通过IIS中的工具来生成. 然后需要填写如下信息: 下一步后选择文件名后我们就可以创建出CSR 文件了 ...

  7. sed基础

    sed  文本流编辑的  行编辑器 hold space :保持空间.仓库,半成品 一次从文件中读取一行,放到自己编辑的内存缓冲空间即模式空间,不会编辑原文件:根据所给定的命令在模式空间中做编辑处理, ...

  8. 启动maven项目时报错Failed to start component [StandardEngine[Tomcat]]: A child container failed during start

    详细错误信息:Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run (default-cli) on ...

  9. err="etherbase address must be explicitly specified"

    如果要初始化区块链的话就用创始区块   如果通过创世区块来初始化区块链的话,首先需要一个初始化区块链的json文件,如下. { "config": { "chainId& ...

  10. Linux 操作memcache命令行

    telnet 127.0.0.1 11211 连接 memcache stats 查看 memcache 状态 状态说明: pid memcache服务器的进程ID uptime 服务器已经运行的秒数 ...