1 安装docker环境
环境安装略过,但要说明一点,docker的容器是运行在一个内置的linux中的,这也是为什么docker要求windows上安装WSL(windows subsystem linux)的原因。
下面会用到的参数说明:
参数 | 说明 |
-d (--detach) | 在后台静默运行容器 |
-p (--publish) | 将指定的容器端口发布映射到宿主机,格式: 宿主机端口:容器端口 |
-P (--publish-all) | 将容器中所有已被暴露的端口发布映射到宿主机(随机分配,避免端口冲突) |
-v (--volume) | 将宿主机目录挂载到容器里,格式: 宿主机目录:容器目录 |
-e (--env) | 设置环境变量 |
--name | 为容器分配一个名称 |
--link | 链接添加到另一个容器 |
其他参数,请查阅官方文档进行详细了解。
2 拉取postgres、pgadmin4及odoo的docker镜像
docker pull postgres:12
docker pull dpage/pgadmin4
docker pull odoo:14
在上面的三条拉取镜像的指令中, 有两条(postgres和odoo的镜像)使用【 : 】指定了镜像版本,dpage/pgadmin4 没有指定拉取版本,docker会默认拉取最新版本。
3 运行容器,启动postgres数据库服务
docker run -d -p 15432:5432 --name postgresql_12 -v pgdata:/var/lib/postgresql/data -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres postgres:12
这里为postgres:12镜像跑起来后的容器,分配了名称 postgresql_12,并将这个容器的端口号5432(冒号后面的是容器端口)映射到主机端口15432(冒号前的事宿主机端口)。
需要注意的一点是,run的时候也要指定镜像版本,不然docker会去拉去最新的版本,进行run。
4 运行容器,启动odoo服务
docker run -d -p 18069:8069 --name odoo_14 -v /var/odoo14_addons:/mnt/extra-addons --link postgresql_12:db odoo:14
这里的容器 odoo_14 作为源容器, postgresql_12 作为目标容器,通过 --link 进行安全链接。
此时访问 http://127.0.0.1:18069 即进入ODOO界面。
5 运行容器,启动pgadmin服务
docker run -d --name pgadmin4 -p 15050:80 -e PGADMIN_DEFAULT_EMAIL=zerone40@163.com -e PGADMIN_DEFAULT_PASSWORD=123 -e PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True -e PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10 dpage/pgadmin4
通过-e设置环境变量,以传递登录邮箱、登录密码已经一些其他的数据库配置。注意,这里跑的镜像是没有指定版本的哦。
5 使用pgadmin链接postgres
以上pgadmin服务启动后,稍等会。然后从浏览器访问 http://localhost:15050端口,进入登录页面,使用上面设置的邮箱和密码进行登录。
这里需要注意,主机名称/地址 一项,需要填写 host.docker.internal 因为pgadmin运行在docker中,所以这里不能写localhost或127.0.0.1。这里除了 host.docker.internal 还能填写宿主机IP。
用户名填写postgres,这是默认的(如果在第三部中,指定了环境变量POSTGRES_USER,比如POSTGRES_USER=odoo14,这里的用户名就要填写odoo14),密码填写第3步中,设置的POSTGRES_PASSWORD,也就是postgres。端口号填写映射到宿主机的端口 15432
保存即可看到已创建了服务器连接。
补充:运行多个odoo实例
docker run -d -p 18070:8069 --name odoo14_01 --link postgresql_12:db odoo:14
docker run -d -p 18071:8069 --name odoo14_02 --link postgresql_12:db odoo:14
再补充:数据库 db_filter隔离
docker run -d -p 18072:8069 --name odoo14_03 --link postgresql_12:db --dbfilter=odoo_db_03