A simple sql script that will populate a database with the famous northwind example, adapted for postgres.
Use the provided sql file nortwhind.sql
in order to populate your database.
https://www.docker.com/get-started
https://docs.docker.com/compose/install/
> docker-compose up
...
... Lots of messages...
...
Creating network "northwind_psql_db" with driver "bridge"
Creating volume "northwind_psql_db" with default driver
Creating volume "northwind_psql_pgadmin" with default driver
Creating pgadmin ... done
Creating db ... done
Open another terminal window, and type:
> docker-compose exec db psql -U postgres -d northwind
psql (13.2 (Debian 13.2-1.pgdg100+1))
Type "help" for help.
northwind=# select * from us_states;
state_id | state_name | state_abbr | state_region
----------+----------------------+------------+--------------
1 | Alabama | AL | south
2 | Alaska | AK | north
...
Alternatively, you can launch bash, then psql:
docker-compose exec db /bin/bash
# You are now inside the "db" docker container
psql -U postgres northwind
The "db" docker exposes postgres on the port 55432. If you have psql on your path, you may connect to it via:
# Run this directly from your computer (this will connect to the docker db)
psql -U postgres northwind -p 55432
Access to PgAdmin at the url: https://localhost:5050
Add a new server in PgAdmin:
- General Tab:
- Name = db
- Connection Tab:
- Host name: db
- Username: postgres
- Password: postgres
Then, select database "northwind".
Stop the server that was launched by docker compose up
via Ctrl-C
, then remove the containers via:
docker-compose down
Your modifications to the postgres database(s)will be persisted in the postgresql_data
docker volume, and can be retrieved once you restart docker compose up
.
If you need to delete the database data, run docker-compose down -v
(the database will then be repopulated from scratch when running docker-compose up
).
If you need to upload any files into your db container, just copy and paste them to the files
local folder. They will be available at the /files
path inside the db container.