由于开发需要,部署环境的时候直接上docker,记录一下docker中安装postgresql的方法。
首先拉取postgre的镜像:
我这里用的是postgre10.1
命令:docker pull postgres:10.1
**注意:**后面可以更换postgre的版本
命令:docker images 查看docker的镜像
最开始的时候我按照网上的方法直接运行docker run,生成容器且运行容器,然后发现外部访问都访问不到数据库。研究了很久,一开始以为是docker的网络设置没有成功。但是docker的网络是自带的,安装之后自动生成。
之后问了公司技术大佬,他告诉我启动postgre的时候应该挂载数据目录,且要跟在centor7的环境下直接安装postgre相同的配置。这样的话就需要Dockerfile生成一个定制的postgre镜像。
下面贴出来Dockerfile:
#基础镜像
FROM postgres:10.1
#挂载的数据目录,防止容器异常停止时数据丢失
VOLUME /var/lib/postgresql/data
#工作目录(由于docker上下文的概念,导致没有定义工作目录的时候copy命令一直报错)
WORKDIR /home/pg
#pg的配置文件,把我们先配置好的pg文件copy到容器中相应的目录下(postgre如果不修改这两个文件,没办法从外部访问)
COPY postgresql.conf /etc/postgresql/10/main/pg_hba.conf
COPY pg_hba.conf /etc/postgresql/10/main/pg_hba.conf
把写好的Dockerfile以及pg_hba.conf,pg_hba.conf上传的服务器的某个文件夹下
进入文件所在的路径,运行
命令:docker build -t eg_postgresql .
注意:-t 为镜像名字,最后还有一个.
查看docker的image,发现生成了一个名为eg_postgresql的镜像。
最后,运行并且生成命令
命令:docker run --name postgres_demo -e POSTGRES_PASSWORD=5,mnbvcxz -p 5432:5432 -d eg_postgresql:latest