Sign inSign up

acrsofter/postgresql

By acrsofter

•Updated over 1 year ago

Simple postgresql, based on alpine packages

Image
Databases & storage
0

317

acrsofter/postgresql repository overview

Simple postgresql, based on alpine packages.
Preinited data storage in image.

2025: based on postgresql17

Create volume for db data, do not use bind mounts.
You can create simple volume, or volume bindet to some path on host, for example /path/to/data/files
This volume must be empty before create container

docker volume create --name pg-db-data --opt type=none --opt o=bind --opt device=/path/to/data/files

Create container

docker create --name pdb --restart unless-stopped -v pg-db-data:/var/lib/postgresql/data acrsofter/postgresql

Now you can edit configuration files at /path/to/data/files on host

docker start pdb

Change password for postgres user

docker exec pdb psql -c "ALTER USER postgres WITH PASSWORD '!you new password!';"

If you want to use socket for local inter container connection for db
Create volume for socket

docker volume create --name pg-db-socket

And container

docker create --name pdb --restart unless-stopped -v pg-db-data:/var/lib/postgresql/data -v pg-db-socket:/run/postgresql  acrsofter/postgresql

You can add -v pg-db-socket:/run/postgresql volume to any container that need local connection to db
Local connections must be used only in local trusted isolated environment.

Composed example:

services:

# postgres database
# -----------------
 pdb:
  image: acrsofter/postgresql
  restart: unless-stopped
  volumes:
   - pg-db-data:/var/lib/postgresql/data
   - pg-db-socket:/run/postgresql
  cpu_shares: 512
  mem_limit: 256mb

# Adminer
# -------
 adminer:
  image: adminer
  restart: unless-stopped
  environment:
   ADMINER_PLUGINS: 'tables-filter tinymce'
   ADMINER_DEFAULT_SERVER: /run/postgresql
  volumes:
   - pg-db-socket:/run/postgresql
  ports:
   - 8091:8080
  cpu_shares: 100
  mem_limit: 128mb

volumes:
 pg-db-data:
  external: true

 pg-db-socket:

Now you can use pdb or /run/postgresql as server in adminer to db connect

Dockerfile:

FROM alpine:latest

ENV LANG=en_US.utf8

RUN apk add --no-cache postgresql17 postgresql17-contrib
RUN apk add --no-cache postgresql17-client

RUN \
 install --verbose --directory --owner postgres --group postgres --mode 1777 /var/lib/postgresql \
 install --verbose --directory --owner postgres --group postgres --mode 1777 /var/lib/postgresql/data \
 install --verbose --directory --owner postgres --group postgres --mode 3777 /var/run/postgresql


WORKDIR /var/lib/postgresql
USER postgres:postgres

RUN initdb --username=postgres --pwfile=<(printf "%s\n" "!Change!") --auth=scram-sha-256 --auth-host=scram-sha-256 --auth-local=trust -D /var/lib/postgresql/data

COPY --chown=postgres:postgres configs/*.conf data/

VOLUME /var/lib/postgresql/data

EXPOSE 5432

CMD ["/usr/bin/postgres17", "-D", "/var/lib/postgresql/data"]

Tag summary

Content type

Image

Digest

sha256:eb8dff0ce…

Size

22 MB

Last updated

over 1 year ago

docker pull acrsofter/postgresql