Skip to content

PostgreSQL

Description / nameInput element
Container Registry
Container Configuration Root Path
Timezone
User ID
Group ID
PostgreSQL Host Port
PostgreSQL /var/lib/postgresql/data Path

Build Status Last Commit sysvipc Required

The World's Most Advanced Open Source Relational Database on FreeBSD.

Port 5432
Registry ghcr.io/daemonless/postgres
Daemonless daemonless/postgres
Source www.postgresql.org/
Website www.postgresql.org

Version Tags

Tag Description Best For
14 / 14-pkg FreeBSD Quarterly. Uses stable, tested packages. Production stability.
14-pkg-latest FreeBSD Latest. Rolling package updates. Newest FreeBSD packages.
17 / 17-pkg FreeBSD Quarterly. Uses stable, tested packages. Production stability.
17-pkg-latest FreeBSD Latest. Rolling package updates. Newest FreeBSD packages.
18 / 18-pkg / latest / pkg FreeBSD Quarterly. Uses stable, tested packages. Most users. Matches Linux Docker behavior.
18-pkg-latest / pkg-latest FreeBSD Latest. Rolling package updates. Newest FreeBSD packages.
Podman on FreeBSD currently requires root. All commands must be run as root (or via doas/sudo).

System V IPC Required

This application requires --annotation 'org.freebsd.jail.allow.sysvipc=true' for shared memory access (Requires patched ocijail).

Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions.

Deployment

services:
  postgres:
    image: ghcr.io/daemonless/postgres:latest
    container_name: postgres
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=postgres
      - PUID=1000
      - PGID=1000
      - TZ=UTC
    volumes:
      - "/path/to/containers/postgres/var/lib/postgresql/data:/var/lib/postgresql/data"
    ports:
      - 5432:5432
    annotations:
      org.freebsd.jail.allow.sysvipc: "true"
    restart: unless-stopped
podman run -d --name postgres \
  -p 5432:5432 \
  --annotation 'org.freebsd.jail.allow.sysvipc=true' \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=postgres \
  -e POSTGRES_DB=postgres \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=UTC \
  -v /path/to/containers/postgres/var/lib/postgresql/data:/var/lib/postgresql/data \
  ghcr.io/daemonless/postgres:latest
- name: Deploy postgres
  containers.podman.podman_container:
    name: postgres
    image: ghcr.io/daemonless/postgres:latest
    state: started
    restart_policy: always
    env:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "postgres"
      POSTGRES_DB: "postgres"
      PUID: "1000"
      PGID: "1000"
      TZ: "UTC"
    ports:
      - "5432:5432"
    volumes:
      - "/path/to/containers/postgres/var/lib/postgresql/data:/var/lib/postgresql/data"
    annotation:
      org.freebsd.jail.allow.sysvipc: "true"

Interactive Configuration

Parameters

Environment Variables

Variable Default Description
POSTGRES_USER postgres Database superuser name (default: postgres)
POSTGRES_PASSWORD postgres Database superuser password
POSTGRES_DB postgres Default database to create (default: same as user)
PUID 1000
PGID 1000
TZ UTC

Volumes

Path Description
/var/lib/postgresql/data Database data directory

Ports

Port Protocol Description
5432 TCP PostgreSQL port

Implementation Details

  • Architectures: amd64
  • User: bsd (UID/GID set via PUID/PGID). Defaults to 1000:1000.
  • Base: Built on ghcr.io/daemonless/base (FreeBSD 15.0).

Need help? Join our Discord community.