3.4 KiB
Quickstart step 2: Initialize your database
Without Docker
You need a fresh Postgres database and a database user that has full ownership of that database.
-
Create a database for the current Unix user
# For Linux users, first access the postgres user shell sudo su - postgres # For Mac OS users sudo su - _postgrescreatedb -
Create the Sourcegraph user and password
createuser --superuser sourcegraph psql -c "ALTER USER sourcegraph WITH PASSWORD 'sourcegraph';" -
Create the Sourcegraph database
createdb --owner=sourcegraph --encoding=UTF8 --template=template0 sourcegraph -
Configure database settings in your environment
The Sourcegraph server reads PostgreSQL connection configuration from the
PG*environment variables.Add these, for example, in your
~/.bashrc:export PGPORT=5432 export PGHOST=localhost export PGUSER=sourcegraph export PGPASSWORD=sourcegraph export PGDATABASE=sourcegraph export PGSSLMODE=disableYou can also use a tool like
envdiror a.dotenvfile to source these env vars on demand when you start the server.
With Docker
You may also want to run Postgres within a docker container instead of as a system service. Running within a container provides some advantages such as storing the data seperately from the container, you do not need to run it as a system service and its easy to use different database versions or multiple databases.
-
Create a directory to store and mount the database from for persistence:
# Create a seperate dir to store the database mkdir PGDATA_DIR # Also add this to your '~/.bashrc' export PGDATA_DIR=/path/to/PGDATA_DIR/ -
Run the container:
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=sourcegraph \
-e POSTGRES_USER=sourcegraph -e POSTGRES_INITDB_ARGS=" --encoding=UTF8 " \
-v $PGDATA_DIR:/var/lib/postgresql/data postgres
-
Ensure you can connect to the database using
psql -U sourcegraphand enter passwordsourcegraph. -
Configure database settings in your environment:
The Sourcegraph server reads PostgreSQL connection configuration from the
PG*environment variables.Add these, for example, in your
~/.bashrc:export PGPORT=5432 export PGHOST=localhost export PGUSER=sourcegraph export PGPASSWORD=sourcegraph export PGDATABASE=sourcegraph export PGSSLMODE=disableYou can also use a tool like
envdiror a.dotenvfile to source these env vars on demand when you start the server. -
On restarting docker, you may need to start the container again. Find the image with
docker ps --alland thendocker run <$containerID>to start again.
More info
For more information about data storage, read our full PostgreSQL page.
Migrations are applied automatically.