This tutorial assumes you’ve used Docker and Docker-Compose before. If you haven’t, you should probably use Heroku instead, like the README says.
The example docker-compose file
I called this file
docker-compose.yml, and put it in a directory called
bors. The name of the directory matters, since docker-compose uses it as the “project name”, but if you want to call it something else, you can.
version: "2" services: web: image: borsng/bors-ng restart: always ports: - "80:8000" environment: # You shouldn't have to change these PORT: 8000 DATABASE_USE_SSL: "false" DATABASE_AUTO_MIGRATE: "true" ALLOW_PRIVATE_REPOS: "true" # Replace this with the hostname of your bors instance # For example, the public instance is app.bors.tech # and cockroachdb runs bors.crdb.io PUBLIC_HOST: ec2-35-165-77-94.us-west-2.compute.amazonaws.com # Replace this with a random number # If you have a bors source checkout, you can run `mix phx.gen.secret` to get one SECRET_KEY_BASE: [censored] # Get these from the GitHub App setup screen under "OAuth credentials" GITHUB_CLIENT_ID: Iv1.8777d55dcb1196be GITHUB_CLIENT_SECRET: [censored] # Get this from the GitHub App setup screen under "About" GITHUB_INTEGRATION_ID: 15974 # Get this by taking the private key and base64-encoding it # For example, `openssl base64 -A -e < bors-merge-queue.2018-08-10.private-key.pem` # the result will be long, and will end in one or two equal signs GITHUB_INTEGRATION_PEM: [censored] # Replace this with a random number # You will also provide this same number to GitHub when you set up the app GITHUB_WEBHOOK_SECRET: [censored] # Make sure the [censored] password here matches the POSTGRES_PASSWORD DATABASE_URL: postgres://postgres:[censored]@postgres:5432/bors postgres: image: postgres:10.5 restart: always volumes: - datadb:/var/lib/postgresql/data environment: # Make sure the [censored] password here matches the one in the DATABASE_URL POSTGRES_PASSWORD: [censored] volumes: datadb: networks: default: driver: bridge
The environment variables should be replaced with stuff specific to your setup.
How to administer it
You can start everything with this command (it should restart all the containers when your computer reboots automatically, as long as you start them the first time):
docker-compose up -d
You can get logs from bors with this command:
docker-compose logs web
You can get an Elixir shell with this command:
docker-compose exec web /app/bors/bin/bors remote_console
You can update to a newer bors instance with these commands:
docker pull borsng/bors-ng && docker-compose up --force-recreate -d
This post is a wiki, so you can edit it if there’s something that can be improved.