赞
踩
Postgres是一款开源的全栈数据库。开发者把它念作 post-gress-Q-L。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。
在docker hub上有postgres的官方镜像,可以直接pull下来使用,也可以作为父镜像做一些定制。
由于拉取的镜像直接启动的容器需要设置时区,所以我们可以制作一个设置好时区的dockerfile。
FROM postgres:14.1-alpine3.14
MAINTAINER Hello <hello_world@your.mail>
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk update\
&& apk add -U tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && apk del tzdata
WORKDIR /var/lib/postgresql/data
然后执行docker命令,生成镜像文件
docker build -t postgres:test .
镜像完成后就可以创建容器了,创建容器的时候通过-v把数据库的数据文件及配置目录挂在到宿主机,并且通过-e POSTGRES_PASSWORD和-e POSTGRES_USER指定用户名密码及其他一些参数
docker run --name postgres-test -p15050:5432 -v /data/db/postgres-test/:/var/lib/postgresql/data -e POSTGRES_PASSWORD=f7c757ce9f1e81dbdcb0bac446769e1a -e POSTGRES_USER=postgres -m 4g --shm-size 1g -d postgres:test
容器创建完,可以用客户端工具连接ip和端口,输入用户名密码测试一下。
镜像制作成功后,可以导出tar包,方便其他地方(特别是内网环境)安装的时候直接导入。
-- 导出镜像
docker save postgres:test > postgres.tar
-- 导入镜像
docker load < postgres.tar
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。