[fix:11]拆分Dockerfile;更新README;更新Makefile;更新docker-compose配置文件
This commit is contained in:
@@ -1,27 +1,90 @@
|
||||
# 简介
|
||||
|
||||
基于的Ubuntu系统的 PostgreSQL Docker镜像。
|
||||
针对 [PostgreSQL](https://www.postgresql.org) 应用的 Docker 镜像,用于提供 PostgreSQL 服务。
|
||||
|
||||
详细信息可参照:[官方说明](https://www.postgresql.org/docs/)
|
||||
|
||||
<img src="img/postgresql-logo.png" alt="postgresql-logo" style="zoom: 33%;" />
|
||||
|
||||
**版本信息:**
|
||||
|
||||
|
||||
- 11、11.8、latest
|
||||
- 10、10.13
|
||||
|
||||
**镜像信息:**
|
||||
|
||||
* 镜像地址:colovu/postgres:latest
|
||||
* 依赖镜像:colovu/ubuntu:latest
|
||||
|
||||
|
||||
|
||||
## 数据卷
|
||||
## TL;DR
|
||||
|
||||
Docker 快速启动命令:
|
||||
|
||||
```shell
|
||||
/srv/data:数据存储目录
|
||||
/srv/conf:配置文件及初始化文件存储目录
|
||||
/var/run:运行时文件存储目录
|
||||
/var/log:日志文件存储目录
|
||||
$ docker run -d --name postgres -e ALLOW_EMPTY_PASSWORD=yes colovu/postgres:latest
|
||||
```
|
||||
|
||||
Docker-Compose 快速启动命令:
|
||||
|
||||
```shell
|
||||
$ curl -sSL https://raw.githubusercontent.com/colovu/docker-postgres/master/docker-compose.yml > docker-compose.yml
|
||||
|
||||
$ docker-compose up -d
|
||||
```
|
||||
|
||||
|
||||
|
||||
****
|
||||
|
||||
|
||||
|
||||
## 默认对外声明
|
||||
|
||||
### 端口
|
||||
|
||||
- 5432:PostgreSQL 业务客户端访问端口
|
||||
|
||||
### 数据卷
|
||||
|
||||
镜像默认提供以下数据卷定义:
|
||||
|
||||
```shell
|
||||
/var/log # 日志输出,应用日志输出,非数据日志输出
|
||||
/srv/conf # 配置文件
|
||||
/srv/data # 数据文件
|
||||
/srv/datalog # 数据操作日志文件
|
||||
```
|
||||
|
||||
如果需要持久化存储相应数据,需要在宿主机建立本地目录,并在使用镜像初始化容器时进行数据卷映射。
|
||||
|
||||
举例:
|
||||
|
||||
- 使用宿主机`/host/dir/to/conf`存储配置文件
|
||||
- 使用宿主机`/host/dir/to/data`存储数据文件
|
||||
- 使用宿主机`/host/dir/to/log`存储日志文件
|
||||
|
||||
创建以上相应的宿主机目录后,容器启动命令中对应的数据卷映射参数类似如下:
|
||||
|
||||
```shell
|
||||
-v /host/dir/to/conf:/srv/conf -v /host/dir/to/data:/srv/data -v /host/dir/to/log:/var/log
|
||||
```
|
||||
|
||||
使用 Docker Compose 时配置文件类似如下:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
postgresql:
|
||||
...
|
||||
volumes:
|
||||
- /host/dir/to/conf:/srv/conf
|
||||
- /host/dir/to/data:/srv/data
|
||||
- /host/dir/to/log:/var/log
|
||||
...
|
||||
```
|
||||
|
||||
> 注意:应用需要使用的子目录会自动创建。
|
||||
|
||||
|
||||
|
||||
## 使用说明
|
||||
@@ -325,10 +388,51 @@ initdb: could not look up effective user ID 1000: user does not exist
|
||||
|
||||
|
||||
|
||||
## 安全
|
||||
|
||||
### 用户及密码
|
||||
|
||||
PostgreSQL 镜像默认禁用了无密码访问功能,在实际生产环境中建议使用用户名及密码控制访问;如果为了测试需要,可以使用以下环境变量启用无密码访问功能:
|
||||
|
||||
```shell
|
||||
ALLOW_EMPTY_PASSWORD=yes
|
||||
```
|
||||
|
||||
通过配置环境变量`PG_PASSWORD`,可以启用基于密码的用户认证功能。命令行使用参考:
|
||||
|
||||
```shell
|
||||
$ docker run -d -e PG_USERNAME=postgres -e PG_PASSWORD=colovu colovu/postgres:latest
|
||||
```
|
||||
|
||||
使用 Docker-Compose 时,`docker-compose.yml`应包含类似如下配置:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
postgres:
|
||||
...
|
||||
environment:
|
||||
- PG_USERNAME=postgres
|
||||
- PG_PASSWORD=colovu
|
||||
...
|
||||
```
|
||||
|
||||
### 容器安全
|
||||
|
||||
本容器默认使用应用对应的运行时用户及用户组运行应用,以加强容器的安全性。在使用非`root`用户运行容器时,相关的资源访问会受限;应用仅能操作镜像创建时指定的路径及数据。使用`Non-root`方式的容器,更适合在生产环境中使用。
|
||||
|
||||
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 容器中 PostgreSQL 启动参数不能配置为后台运行,只能使用前台运行方式
|
||||
|
||||
|
||||
|
||||
## 参考
|
||||
|
||||
- [官方Docker](https://hub.docker.com/_/postgres?tab=description)
|
||||
- [官方介绍](http://www.postgresql.org/docs/9.5/interactive/app-initdb.html)
|
||||
- [官方中文手册](http://www.postgres.cn/v2/document)
|
||||
|
||||
----
|
||||
|
||||
|
||||
Reference in New Issue
Block a user