【Docker】【Mini_Postgresql_Image】打造Mini版 Postgresql Docker镜像

由于最新版本的postgreqsl数据库的镜像大小好几百兆。今天就来构建自己的postgresql基础镜像让低配服务器或者电脑可以稳定并且低资源的运行一个postgresql数据库。

基础镜像

官方镜像提供多种操作系统版本的镜像,要想包小首选Alpine版本。

另外最新版本的功能都比较多,这边建议选用10版本,大小79M。

配置

  • 资源限制 :通过 --cpus="1"--memory="512m" 限制 CPU 和内存的使用,使该容器适合低资源环境。
  • 交换内存使用--memory-swappiness="10" 选项确保交换内存的使用较少,优先使用物理内存。
  • Postgres 配置 :通过环境变量 PGOPTIONS 设置共享内存缓冲区为 64 MB(--shared_buffers=64MB),并禁用日志收集(--logging_collector=off),以减少资源占用。
  • 数据持久化 :通过卷映射 -v /home/mini_postgresql_data:/var/lib/postgresql/data,确保数据库数据持久化到本地文件系统。
  • 网络设置 :端口映射 -p 5432:5432 允许外部通过 5432 端口连接到 PostgreSQL 实例。

这个配置可以帮助你在资源有限的 Docker 环境中高效运行 PostgreSQL。

Docker命令

docker 命令直接启动自己数据库容器,命令如下:

复制代码
docker run -d \
  --name xyx-postgres \
  --cpus="1" \
  --memory="512m" \
  --memory-swap="1g" \
  --memory-swappiness="10" \
  -e PGOPTIONS="--shared_buffers=64MB --logging_collector=off" \
  -e POSTGRES_USER=<username> \
  -e POSTGRES_PASSWORD=<password>\
  -e POSTGRES_DB=<dbname> \
  -v /home/mini_postgresql_data:/var/lib/postgresql/data \
  -p 5432:5432 \
  docker.io/postgres:10-alpine

制作Dockerfile

复制代码
# Use the official PostgreSQL 10 Alpine image as the base
FROM postgres:10-alpine

# Set environment variables for PostgreSQL configuration
ENV POSTGRES_USER=<username> \
    POSTGRES_PASSWORD=<password> \
    POSTGRES_DB=<db_name> \
    PGOPTIONS="--shared_buffers=64MB --logging_collector=off"

# Expose PostgreSQL port
EXPOSE 5432

# Optional: Copy any additional configuration or initialization files
# COPY init.sql /docker-entrypoint-initdb.d/

# Default command to start the PostgreSQL server
CMD ["postgres"]

Build and Run the Image

  • Buid

    docker build -t xyx-postgres:custom .

  • Run

    docker run -d
    --name xyx-postgres
    --cpus="1"
    --memory="512m"
    --memory-swap="1g"
    --memory-swappiness="10"
    -v /home/mini_postgresql_data:/var/lib/postgresql/data
    -p 5432:5432
    xyx-postgres:custom

解释:

  1. 基础镜像: Dockerfile 从官方的 PostgreSQL 10 Alpine 镜像开始,这是一个轻量级的镜像。
  2. 环境变量: 通过环境变量设置 POSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_DB
  3. PostgreSQL 选项: 通过 PGOPTIONS 环境变量设置 PostgreSQL 的共享缓存大小,并禁用日志收集器。
  4. 数据卷:docker run 命令中,将数据目录挂载到主机的 /home/mini_postgresql_data 路径上。
  5. 资源限制: 限制容器的 CPU 和内存使用。
  6. 暴露端口: PostgreSQL 运行在 5432 端口,并将其暴露,方便从主机访问。

你可以根据需要进一步修改 Dockerfile,添加特定的配置或初始化脚本(例如,自定义 SQL 文件)。

相关推荐
帷幄庸者3 小时前
跨网的Kubernetes集群:从零构建混合云架构
容器·架构·kubernetes
bepeater12343 小时前
使用Kubernetes部署Spring Boot项目
spring boot·容器·kubernetes
终生成长者4 小时前
Kubernetes常用操作与概念总结--从服务器导出mongo数据,并下载到本地
服务器·容器·kubernetes
数据知道6 小时前
PostgreSQL:防止 WAL 文件撑爆磁盘的策略(WAL归档配置)
数据库·postgresql
运维行者_7 小时前
深入解析 Docker 监控:核心指标完整清单
运维·服务器·网络·数据库·docker·容器·eureka
礼拜天没时间.7 小时前
容器网络配置——从互联到自定义桥接
运维·网络·docker·容器·centos
中草药z8 小时前
【Linux】拆解 Linux 容器化核心:Namespace 隔离 + cgroups 资源控制,附 LXC 容器生命周期实战
运维·docker·容器·虚拟化·namespace·lxc·cgroups
猫头虎8 小时前
【汉化中文版】OpenClaw(Clawdbot/Moltbot)第三方开源汉化中文发行版部署全指南:一键脚本/Docker/npm 三模式安装+Ubuntu 环境配置+中文汉化界面适配开源版
docker·npm·开源·aigc·ai编程·远程工作·openclaw
heimeiyingwang8 小时前
官网知识库结构化整理指南
java·sql·架构·database
feasibility.9 小时前
基于Qwen3-VL多模态嵌入/重排序模型+Dify(docker)工作流的电商图文检索系统
人工智能·docker·多模态·教育电商·dify·rag·智能体/工作流