odoo源码运行环境如何迁移至docker生产环境

8 篇文章 0 订阅
7 篇文章 0 订阅

近期公司要求实现生产环境容器化,公司的odoo12在源码环境下运行了两年多,积累了不少数据,如何迁移至docker生产环境?下面分两部分进行介绍:

一、odoo的docker容器化

odoo需要两个容器连接来运行,一是odoo;二是postgresql.因此这里是使用docker-compose来完成.

docker-compose.yml

version: '3.1'
services:
  web:
    image: odoo:12.0
    depends_on:
      - db
    ports:
      - "8069:8069"
    volumes:
      # 注意:使用./web-data:/var/lib/odoo 系统运行会报错;只有使用 web-data:/var/lib/odoo 系统才会正常。
      - web-data:/var/lib/odoo
      - ./conf:/etc/odoo
      - ~/odoo12/B8_addons:/mnt/B8_addons
      - ~/odoo12/OCA/account-financial-tools:/mnt/account-financial-tools
      - ~/odoo12/OCA/reporting-engine:/mnt/reporting-engine
      - ~/odoo12/OCA/contract:/mnt/contract
      - ~/odoo12/OCA/sale-workflow:/mnt/sale-workflow
      - ~/odoo12/OCA/account-closing:/mnt/account-closing
      - ~/odoo12/om_account:/mnt/om_account
    restart: always
  db:
    image: postgres:10
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD=123456
      - POSTGRES_USER=postgres
      - PGDATA=/var/lib/postgresql/data/pgdata
    ports:
      - "5432:5432"
    volumes: 
      - pg-data:/var/lib/postgresql/data/pgdata
    restart: always
volumes:
  web-data:
  pg-data:

在docker-compose.yml所在目录中执行:

docker-compose up -d

名为web的服务

image: odoo:12.0
获取镜像odoo版本12.0的,其他版本如15.0,直接修改为 image: odoo:15.0即可

depends_on:
- db
名为web的容器服务是依赖于名为db的容器服务

ports:
- “8069:8069”
宿主机端口:容器端口

./conf:/etc/odoo
宿主机目录/conf中存放的是odoo.conf(附后),映射到容器中的目录/etc/odoo;

~/odoo12/B8_addons:/mnt/B8_addons
宿主机目录~/odoo12/B8_addons中存放的是自行开发的插件,映射到容器中的目录/mnt/B8_addons

restart: always
服务器重启时,容器也会自动重启

名为db的服务

image: postgres:10
获取镜像postgres版本10的,其他版本如13.0,直接修改为 image: postgres:13即可

environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=123456
- POSTGRES_USER=postgres
- PGDATA=/var/lib/postgresql/data/pgdata
数据库postgres的环境配置,依次是数据库名称\数据库密码\数据库用户\数据库文件在容器中存放的位置

后面几条语句就不再重复了.

odoo.conf

[options]
addons_path = /mnt/B8_addons, /mnt/account-financial-tools, /mnt/reporting-engine, mnt/contract, /mnt/sale-workflow, /mnt/account-closing, /mnt/om_account, /usr/lib/python3/dist-packages/odoo/addons
# addons_path = /mnt/B8_addons, /mnt/account-financial-tools, /mnt/reporting-engine, mnt/contract, /mnt/sale-workflow, /mnt/account-closing, /usr/lib/python3/dist-packages/odoo/addons
# addons_path = /home/raymond/odoo-dev/B8_addons,/home/raymond/odoo-dev/OCA/hr,/home/raymond/odoo-dev/OCA/contract,/home/raymond/odoo-dev/OCA/account-invoicing,/home/raymond/odoo-dev/OCA/account-financial-tools
# admin_passwd = $pbkdf2-sha512$25000$1FpLCQEAwDiH8D4HwBgjJA$bKhjkp/twDvAievcpzC1cvivzB4slhbCaBnHKMEXlizQGbY3OPwazkluEGMPT35hHlzaYcl2QKNTVWQ5/bFDnA
# csv_internal_sep = ,
# data_dir = arb/odoo/.local/Odoo
# db_host = 127.0.0.1
# db_maxconn = 64
# db_name = B8ERP
# db_password = odoo
# db_port = 5432
# db_sslmode = prefer
# db_template = template0
# db_user = odoo
# dbfilter = B8ERP
# demo = {}
# email_from = False
# geoip_database = /usr/GeoIP/GeoLite2-City.mmdb
# http_enable = True
# http_interface = 
http_port = 8069
# import_partial = 
# limit_memory_hard = 2684354560
# limit_memory_soft = 2147483648
# limit_request = 8192
# limit_time_cpu = 300
# limit_time_real = 360
# limit_time_real_cron = -1
# list_db = True
# log_db = False
# log_db_level = warning
# log_handler = :INFO
# log_level = info
# logfile = /home/raymond/odoo-dev/my_odoo/odoo-server.log
# logrotate = False
# longpolling_port = 8072
# max_cron_threads = 2
# osv_memory_age_limit = 1.0
# osv_memory_count_limit = False
# pg_path = None
# pidfile = False
# proxy_mode = False
# reportgz = False
# server_wide_modules = base,web
# smtp_password = False
# smtp_port = 25
# smtp_server = localhost
# smtp_ssl = False
# smtp_user = False
# syslog = False
# test_enable = False
# test_file = False
# test_tags = None
# translate_modules = ['all']
# unaccent = False
# without_demo = False
# workers = 4

二、备份PostgreSQL数据库及恢复

可以参考:

如何备份PostgreSQL数据库
拷贝本地备份文件到docker容器

注意,按这篇文章所提供的语句docker inspect -f '{{.ID}}' store-dev查找出来的实际上是镜像ID,并非容器ID.请使用docker ps来查看容器id,参见 docker cp复制本地文件到docker容器时报错的处理办法

恢复备份文件

进入容器docker exec -u root -it 容器名 /bin/bash

先删除容器挂载的数据库(如B8ERP),再创建一个空数据库

dropdb B8ERP
createdb B8ERP

使用 psql 恢复数据库

psql B8ERP<B8ERP20220108.bak -U postgres -d B8ERP

<完毕>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值