This assumes you've already installed Docker. If you're not sure the best way to do this, the simplest option is to install the Docker Desktop App.
Copy the supplied example config files to their correct locations:
cp example.env .env
TODO Explain what each of these files are for and what values you need to change
TODO this is confusing ^
Before running for the first time, build the project:
docker compose build
To run as if from a fresh install if you have already run the setup process before:
TODO - explain what this deletes and what this retains
docker compose build --no-cache --force-rm
Then:
docker compose up -d
TODO Explain -d and why you might or might not want it
TODO: When running docker compose up -d
for the first time, the api service may start before postgres is fully available and fail to start. Subsequent runs should work as expected, so if you find that the initial migrations didn't run, and your database is empty, try:
docker compose down
docker compose up -d
(We're working to make this better for first-time users.)
Let's say, you've set DEPLOYMENT_HOST
in .env
to icosa.localhost
, you can access the following services thus:
You'll need to add the following line to your /etc/hosts
file (on MacOS and Linux)
or C:\Windows\System32\drivers\etc\hosts (on Windows)
127.0.0.1 icosa.localhost
127.0.0.1 icosa-api.localhost
127.0.0.1 icosa-api-django.localhost
TODO - explain what "seeding" means and why you'd want to
TODO - explain "from inside the container"
docker cp <db.dump> ig-db:/opt/
docker exec -it ig-db bash
Then from inside the container:
pg_restore --data-only -U icosa -d icosa /opt/<db.dump>
docker cp <db.sql> ig-db:/opt/
docker exec -it ig-db bash
Then from inside the container:
psql -U icosa
Then from inside the postgres shell:
Make sure you are connected to the correct database:
\c
You should see You are now connected to database "icosa" as user "icosa".
Import the sql data:
\i /opt/db.sql
TODO - how are people meant to distinguish between 2 and 3? Give them a single, safe default action even if it's a bit slower Is (3) even needed? Seems to happen automatically for me.
There are 3 possible scenarios:
docker compose down
docker compose build
docker compose up
docker compose down`
docker compose build`
docker compose up
docker compose restart