You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Odoo 14 Docker容器中安装cryptography库?

Odoo 14 Docker部署中安装cryptography依赖失败的解决方法

问题场景

我在macOS Monterey(12.5.1)上通过Docker Desktop部署Odoo 14,使用的docker-compose.yaml配置如下:

version: '2'
services:
  web:
    image: odoo:14.0
    depends_on:
      - db
    ports:
      - "8069:8069"
    volumes:
      - odoo-web-data:/var/lib/odoo
      - ./config:/etc/odoo
      - ./addons:/mnt/extra-addons
  db:
    image: postgres:10
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_USER=odoo
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - odoo-db-data:/var/lib/postgresql/data/pgdata
      - ./db:/db
volumes:
  odoo-web-data:
  odoo-db-data:

尝试安装Odoo电商模块时失败,报错:

Unable to install module "account_edi_proxy_client" because an external dependency is not met: Python library not installed: cryptography

本地执行pip3 install cryptography显示已安装,但问题未解决;安装pycryptodome也无效。进入Docker容器执行docker exec -it [container_name] pip3 install cryptography时,出现编译错误:

Command "/usr/bin/python3 -m pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-ynyd_o0_ --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools>=40.6.0,!=60.9.0 wheel "cffi>=1.12; platform_python_implementation != 'PyPy'" setuptools-rust>=0.11.4" failed with error code 1 in None

问题原因及解决方法

原因

官方Odoo 14镜像缺少编译cryptography所需的系统依赖(比如C编译器、rust环境、libssl开发库等),导致pip安装时无法编译源码。

解决步骤

方法1:构建自定义镜像(长期有效,推荐)

  1. 在项目根目录创建Dockerfile:
FROM odoo:14.0

USER root

# 安装编译cryptography所需的系统依赖
RUN apt-get update && apt-get install -y \
    gcc \
    python3-dev \
    libssl-dev \
    rustc \
    cargo \
    && rm -rf /var/lib/apt/lists/*

# 安装cryptography库
RUN pip3 install cryptography

USER odoo
  1. 修改docker-compose.yaml中web服务的配置,替换为自定义构建:
services:
  web:
    build: .  # 替换原有的image: odoo:14.0
    depends_on:
      - db
    # 其余端口、卷配置保持不变
  1. 重新构建并启动容器:
docker-compose up --build -d

方法2:临时在容器内安装依赖(临时有效)

如果不想构建镜像,可临时操作:

  1. 以root身份进入容器:
docker exec -it -u root [container_name] bash
  1. 更新apt源并安装系统依赖:
apt-get update && apt-get install -y gcc python3-dev libssl-dev rustc cargo
  1. 安装cryptography:
pip3 install cryptography
  1. 退出容器并重启Odoo服务:
docker restart [container_name]

注意:方法2的修改仅对当前容器有效,容器重建后会丢失配置,长期使用优先选择方法1。

内容的提问来源于stack exchange,提问作者george

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:10:25