2.2 Run the database locally

On Github we provide a docker image of the Open Discourse database. You can use this docker image to run the database locally on your machine. The docker image contains the latest version of the Postgres database. This section guides you through the steps necessary to run the database on your computer.

2.2.1 Get and launch the database

Three steps are necessary to run the database on your machine:

  1. Authenticate to GitHub Container Registry

    At first you need a GitHub account and authenticate with a personal access token to the GitHub Container Registry. This process just involves some quick steps. Click here for a detailed documentation on how to get and use your personal access token. You can follow the three steps described under “Authenticating with the container registry” and you are done.

  2. Pull the docker container

    After you are authenticated run the following command from your terminal:

    docker pull docker.pkg.github.com/open-discourse/open-discourse/database:latest
  1. Run the database

    Finally you just need to start the docker container with the database:

    docker run --env POSTGRES_USER=postgres --env POSTGRES_DB=postgres --env POSTGRES_PASSWORD=postgres  -p 5432:5432 -d docker.pkg.github.com/open-discourse/open-discourse/database

The database is running on localhost:5432 now. See the table below for details on the environment variables passed on to the docker run command.

variable value
–env POSTGRES_USER postgres
–env POSTGRES_DB postgres
–env POSTGRES_PASSWORD postgres

2.2.2 Use the database

After these steps are done, the database is running locally on port 5432. You can access the database by using a database tool (e.g. DBeaver) or by using a programming language.

Use following credentials to log in to your database:

variable value
db_name next
host_db localhost
db_port 5432
db_user postgres
db_password postgres

2.2.3 Code examples

The following code examples in Python and R show how to access a locally running Open Discourse database. In both examples the Speeches Table is retrieved.

Python Code
import psycopg2
import pandas as pd

# db_connection -----------------------------------------------------------
con_details = {
    "host"      : "localhost",
    "database"  : "next",
    "user"      : "postgres",
    "password"  : "postgres",
    "port"      : "5432"
}
con = psycopg2.connect(**con_details)

# get data tables ---------------------------------------------------------
speeches = pd.read_sql_query("select * from open_discours.speeches", con)
R Code
library("RPostgreSQL")

# db_connection -----------------------------------------------------------
db <- "next"
host_db <- "localhost"
db_port <- "5432"
db_user <- "postgres"
db_password <- "postgres"
con <-
  dbConnect(
    RPostgres::Postgres(),
    dbname = db,
    host = host_db,
    port = db_port,
    user = db_user,
    password = db_password
  )

# get data tables ---------------------------------------------------------
speeches <- dbGetQuery(con,
                       "SELECT *
                       FROM open_discourse.speeches;")