Running pgmoneta with Docker
You can run pgmoneta using Docker instead of compiling it manually.
Prerequisites
- Docker or Podman must be installed on the server where PostgreSQL is running.
- Ensure PostgreSQL is configured to allow external connections.
Step 1: Enable External PostgreSQL Access
Modify the local PostgreSQL server's postgresql.conf file to allow connections from outside:
ini
listen_addresses = '*'listen_addresses = '*'Update pg_hba.conf to allow remote connections:
ini
host all all 0.0.0.0/0 scram-sha-256host all all 0.0.0.0/0 scram-sha-256Then, restart PostgreSQL for the changes to take effect:
sh
sudo systemctl restart postgresqlsudo systemctl restart postgresqlStep 2: Clone the Repository
sh
git clone https://github.com/pgmoneta/pgmoneta.git
cd pgmonetagit clone https://github.com/pgmoneta/pgmoneta.git
cd pgmonetaStep 3: Build the Docker Image`
There are two Dockerfiles available:
Alpine-based image
Using Dockershdocker build -t pgmoneta:latest -f ./contrib/docker/Dockerfile.alpine .docker build -t pgmoneta:latest -f ./contrib/docker/Dockerfile.alpine .Using Podman
shpodman build -t pgmoneta:latest -f ./contrib/docker/Dockerfile.alpine .podman build -t pgmoneta:latest -f ./contrib/docker/Dockerfile.alpine .Rocky Linux 9-based image
Using Dockershdocker build -t pgmoneta:latest -f ./contrib/docker/Dockerfile.rocky9 .docker build -t pgmoneta:latest -f ./contrib/docker/Dockerfile.rocky9 .Using Podman
shpodman build -t pgmoneta:latest -f ./contrib/docker/Dockerfile.rocky9 .podman build -t pgmoneta:latest -f ./contrib/docker/Dockerfile.rocky9 .
Step 4: Run pgmoneta as a Docker Container
Once the image is built, run the container using:
- Using Dockersh
docker run -d --name pgmoneta --network host pgmoneta:latestdocker run -d --name pgmoneta --network host pgmoneta:latest - Using Podmansh
podman run -d --name pgmoneta --network host pgmoneta:latestpodman run -d --name pgmoneta --network host pgmoneta:latest
Step 5: Verify the Container
Check if the container is running:
- Using Dockersh
docker ps | grep pgmonetadocker ps | grep pgmoneta - Using Podmansh
podman ps | grep pgmonetapodman ps | grep pgmoneta
Check logs for any errors:
- Using Dockersh
docker logs pgmonetadocker logs pgmoneta - Using Podmansh
podman logs pgmonetapodman logs pgmoneta
You can also inspect the exposed server at:
http://localhost:5001/http://localhost:5001/