1. Docker,postgresql,odoo和wikijs
Docker作为最流行的开源应用容器引擎,可以方便的让开发人员把应用和依赖打包到可移植的镜像里,并发布到任何linux或者windows操作系统的机器上。极大地提高了程序开发的效率和可移植性。
Postgresql是应用最广泛的开源关系数据库,自从另一个开源数据库Mysql被收购之后,Postgresql作为开源数据库的代表变得更加重要了。pgAdmin4是一款流行的开源的Postgresql管理工具。
odoo是应用最广泛的开源ERP软件,odoo采用python开发,分为开源的社区版本与功能更强大的企业版,在中小企业信息化系统中有非常强大的竞争力。
wikijs是一个开源的维基网站系统,采用JavaScript语言开发。虽然wiki.js和其他维基系统相比还非常年轻,但已经表现出非常明显的竞争优势。
odoo和wiki.js默认都采用postgresql数据库引擎,因此,本文要在Docker环境下安装配置odoo和wikijs,首先需要安装与配置postgresql。
2. Docker安装与配置Postgresql和pgadmin4
2.1 Postgresql的Docker镜像在Windows下无法创建外置卷的问题
由于Docker容器内的数据会随着容器销毁而消失,为了实现数据的持久化存储,尝尝采用外挂卷的形式,即将需要持续保存的数据保存在物理机的指定目录下,并在物理机目录和容器目录间建立链接。
通常情况下这种操作都不会有问题,但Postgresql的Docker镜像(版本13及以下)在Windows宿主机系统下创建外置卷会报错,在postgresql的github仓库issue中这一问题尚未解决,因此,如果要持久保存postgresql的数据,只能在docker中建立数据卷,并将这一数据卷链接到postgresql中。虽然这样无法直接把数据卷映射到宿主机上,但由于数据卷是独立的,也不会随着容器销毁而消失。
2.2 安装与配置Postgresql
在odoo的官方文章中,提供了docker安装postgresql的基本命令,这样的安装是为了保证后续odoo安装的顺利。
docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13
这个安装方式指定了默认的postgresql用户名和密码,这与odoo的docker镜像中默认的配置是一致的。如果修改了这一用户名和密码,则需要在安装odoo的时候单独配置。
上述安装方式中命名了postgresql的数据库名称“db”,在其他容器中可通过该名称进行访问,但这个方式没有将数据库端口暴露出来,同时也没有将数据库存储持久化。因此,在安装时对上述命令稍作修改。
首先在docker中新建一个数据卷
docker volume create pgdata
在新建容器时将端口和数据卷映射加进去(用户名密码暂按odoo默认值,可修改为其他内容)。
docker run -d -v pgdata:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres –name db postgres:13
2.3 安装与配置pgAdmin4
拉取并运行pgadmin4容器,这里将pgadmin4容器的80端口映射到5433端口,方便访问。在运行容器时需要指定默认的用户名和密码。
docker pull dpage/pgadmin4
docker run -d -p 5433:80 –name pgadmin4 -e PGADMIN_DEFAULT_EMAIL=test@123.com -e PGADMIN_DEFAULT_PASSWORD=123456 dpage/pgadmin4
打开浏览器访问pgadmin4:http://localhost:5433/,输入上述用户名密码进行登录,登录后,点击server栏,create一个server。输入postgresql数据库的用户名和密码。需要注意的是,由于pgadmin运行在容器里,因此在填写数据库地址的时候不能用localhost, 而需要用host.docker.internal 来代表宿主机器,或者用宿主机的ip地址也可以。
3. Docker安装与配置odoo
3.1 默认安装
可以采用以下命令安装并运行odoo,这里新建了数据卷odoo-data,并把odoo的数据映射到该数据卷中,如果是在宿主机(例如 D:\odoo-data)新建了物理文件夹,也可以将odoo-data替换为例如D:\odoo-data.
docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t odoo
3.2 修改数据库参数
如果在前一步安装时修改了数据库的用户名密码等参数,则需要修改环境变量HOST、PORT、USER和PASSWORD:
docker run -v odoo-data:/var/lib/odoo -p 8069:8069 -e HOST=db -e PORT=5432 -e USER=odoo -e PASSWORD=odoo --name odoo --link db:db -t odoo
3.3 修改配置文件
如果要修改其他配置参数,则需要将配置文件odoo.conf映射到外部物理卷,在docker启动命令中增加 参数 -v /path/to/config:/etc/odoo。默认的odoo.conf如下,去掉备注项;并修改对应值。
[options]addons_path = /mnt/extra-addons
data_dir = /var/lib/odoo
; admin_passwd = admin
; csv_internal_sep = ,
; db_maxconn = 64
; db_name = False
; db_template = template1
; dbfilter = .*
; debug_mode = False
; email_from = False
; limit_memory_hard = 2684354560
; limit_memory_soft = 2147483648
; limit_request = 8192
; limit_time_cpu = 60
; limit_time_real = 120
; list_db = True
; log_db = False
; log_handler = [‘:INFO’]
; log_level = info
; logfile = None
; longpolling_port = 8072
; max_cron_threads = 2
; osv_memory_age_limit = 1.0
; osv_memory_count_limit = False
; smtp_password = False
; smtp_port = 25
; smtp_server = localhost
; smtp_ssl = False
; smtp_user = False
; workers = 0
; xmlrpc = True
; xmlrpc_interface =
; xmlrpc_port = 8069
; xmlrpcs = True
; xmlrpcs_interface =
; xmlrpcs_port = 8071
4. Docker安装wiki.js
默认安装命令:
docker run -d -p 8080:3000 –name wiki –restart unless-stopped -e “DB_TYPE=postgres” -e “DB_HOST=db” -e “DB_PORT=5432” -e “DB_USER=wikijs” -e “DB_PASS=wikijsrocks” -e “DB_NAME=wiki” requarks/wiki:2
类似地,如果要将数据持久化存储,建立一个外部目录例如 D:\wikidata,并增加-v D:\wikijsdata:/wiki/data 参数,将/wiki/data映射出来即可。