If you just cloned the project:
$ docker-compose up -d
$ dc/exec bundle install
$ dc/rails db:setup
$ dc/sync
The last command is going to clone the Rails repository and populate the database, it takes several minutes.
The application assumes rails.git
is present in the root directory with a mirror of the repository:
git clone --mirror https://github.com/rails/rails.git
That clone is performed by dc/sync
automatically, but it does not update itself. To do so, please run
$ cd rails.git
$ git fetch
whenever you need to get the most recent commits.
To develop you need to start the services:
docker-compose start
When done, stop them:
docker-compose stop
A number of convenience scripts are located in the dc
directory, all of them operate in the main app
container:
Command | Description |
---|---|
dc/bash |
Gets a Bash shell |
dc/psql |
Gets a psql shell |
dc/rails |
Runs bin/rails |
dc/server |
Launches Puma in port 3000 |
dc/sync |
Syncs the database |
dc/deploy |
Deploys the application |
The commands dc/server
and dc/psql
are convenience wrappers around dc/rails
. In general dc/rails
is the main command:
$ dc/rails test
$ dc/rails console
$ dc/rails db:migrate
$ dc/rails runner 'p Commit.count'
$ ...
The command dc/server staging
runs the application in staging
mode. That is a production-like environment (config/environments/staging.rb
is a symlink to config/environments/production.rb
), but it uses the development database and serves static files. If there are changes that act differently in development
and production
, this execution mode may be useful for checking things up before deployment.
To update the local Rails checkout and update the credits run dc/sync
. The command also accepts an optional argument all
, which forces the recomputation of all assignments. This is handy when you've changed the heuristics, and it takes less than a full database rebuild, since it does not reimport the commits themselves (which is costly).
The database is stored in a volume and persists even if you take the containers down with docker-compose down
. If you want to remove the volume and start from scratch please pass -v
to the command.
The production server does not run Docker, you can safely tweak the Docker setup without fear of breaking production.