Simple postgresql, based on alpine packages
317
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"]
Content type
Image
Digest
sha256:eb8dff0ce…
Size
22 MB
Last updated
over 1 year ago
docker pull acrsofter/postgresql