Final work is here and a working SDL manifest
What's below on this page is outdated:
- Init the DB with postgres:adminpass creds
docker network create pgnet1
docker volume create pgvol1
docker run -d --name db1 --hostname db1 --network pgnet1 -e POSTGRES_PASSWORD=adminpass -v pgvol1:/var/lib/postgresql/data postgres:14
- Create a new DB "newdb", with newdb_user:userpass creds
docker run --rm -ti --network pgnet1 -e PGPASSWORD=adminpass -e PGUSER=postgres -e PGHOST=db1 -u postgres --entrypoint psql postgres:14
CREATE USER newdb_user;
CREATE DATABASE newdb;
GRANT ALL PRIVILEGES ON DATABASE newdb TO newdb_user;
ALTER USER newdb_user WITH PASSWORD 'userpass';
\l+
\q
- Connect to the "newdb" with "newdb_user" and create a table called "company"
docker run --rm -ti --network pgnet1 -e PGPASSWORD=userpass -e PGUSER=newdb_user -e PGDATABASE=newdb -e PGHOST=db1 -u postgres --entrypoint psql postgres:14
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
\dt+
\q
- Restart the db1
docker logs db1
docker restart db1
docker logs db1
- Check the connection and the table again
docker run --rm -ti --network pgnet1 -e PGPASSWORD=userpass -e PGUSER=newdb_user -e PGDATABASE=newdb -e PGHOST=db1 -u postgres --entrypoint psql postgres:14
\dt+
\q
- Tear everything down
docker rm -f db1
docker volume rm pgvol1
docker network rm pgnet1
Did 3 tests, only test3 worked in Akash.
test1. mount over /var/lib/postgresql
https://asciinema.org/a/qHPPEpcC24s8sctUsnI6lwq4M
test2. PGDATA=/var/lib/postgresql/data + mount over /var/lib/postgresql
https://asciinema.org/a/3Pf0DIkN3u0mo5neR9meJLIXR
test3. PGDATA=/var/lib/postgresql/data/pgdata1 + mount over /var/lib/postgresql/data
https://asciinema.org/a/OMjkatLwPDR61FbKwrdW0jMv4
Working Postgresql deployment variant for Akash Network