What will be a software solution without a database system (or something similar)? It鈥檚 difficult to imagine.
Many times our software solutions requires a database system. However, I tend to avoid databases software installation, because these days we have docker 馃榾
This post is to document my way of Docker and PostgreSQL for local development. However this concept perfectly works for other databases systems.
Hooray, here is the goal:
- Use Docker and PostgreSQL for local development. Avoid installing a database system.
- Use Docker Volumes for data persistent (this helped in WSL2).
- Use Docker Networks to link our apps with our databases system.
Docker commands:
The following commands helped out when I was on in Windows 10 (Home :D) using WSL2. According to info I found, $PWD *should* work, but it did not. Creating a Docker volume was the way it worked.
create a volume in docker:
docker volume create --name volume_ttmo_demo_db
create a network for our application
$ docker network create network_ttmo_demo
Launch a Postgres container:
tatemo.net1$ docker run --name container_ttmo_postgres -p 5432:5432 --network=network_ttmo_demo -v "volume_ttmo_demo_db:/var/lib/postgresql/data" -e POSTGRES_PASSWORD=super_secured_password -e POSTGRES_USER=user_ttmo_db -d postgres:13.2-alpine
Launch a psql console:
tatemo.net1$ docker run -it --rm --network=network_ttmo_demo postgres:13.2-alpine psql -h localhost -U user_ttmo_db
the previous fails because localhost is not valid in docker network:
tatemo.net123456psql: error: could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432?could not connect to server: Address not available Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?
it fails because locahost is not a valid name on the docker network, instead, as database server, we indicate the container name.
https://www.tutorialspoint.com/postgresql/postgresql_select_database.htm
Update parameters and re-execute psql console:
tatemo.net123456$ docker run -it --rm --network=network_ttmo_demo postgres:13.2-alpine psql -h container_ttmo_postgres -U user_ttmo_dbPassword for user user_ttmo_db:psql (13.2)Type "help" for help.聽user_ttmo_db=#
Now I can run psql commands:
tatemo.net1234567\?: display help\l: list all databases in server\q: quit the psql shell\c: connect to database\dt: list tables in database聽create database hello; -> this creates a database
This is the end, let's put an screenshot:

