Skip to content
develop
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.

Check

A collaborative media annotation platform.

This is a Docker Compose configuration that spins up the whole Check app locally. Tested on Linux and Mac OS X. The repo contains two Docker Compose files, one for development (docker-compose.yml) and the other for testing (docker-test.yml).

Diagram

DO NOT USE IN PRODUCTION! THIS IS ONLY MEANT AS A DEVELOPMENT ENVIRONMENT.

Quick start

  • Install docker-compose
  • Update your virtual memory settings, e.g. by setting vm.max_map_count=262144 in /etc/sysctl.conf
  • git clone --recursive git@github.com:meedan/check.git && cd check
  • bin/first-build.sh and wait (for about one hour this first time!!) for a string in the log that looks like web_1_88cd0bd245b7 | [21:07:07] [webpack:build:web:dev] Time: 83439ms
  • Open http://localhost:3333
  • Click "Create a new account with email" and enter your desired credentials
  • docker-compose exec api bash
  • bundle exec rails c
  • me = User.last; me.confirm; me.is_admin = true; me.save
  • Go back to http://localhost:3333
  • Click "I already have an account" and login using your credentials
  • Enjoy Check! 🎉

Available services and container names

Testing

  • Start the app in test mode: docker-compose -f docker-compose.yml -f docker-test.yml up
  • Check web client: docker-compose exec web npm run test
  • Check browser extension: docker-compose -f docker-compose.yml -f docker-test.yml exec geckodriver bash -c "cd /home && chown -R root seluser" && docker-compose exec mark npm run test
  • Check service API: docker-compose exec api bundle exec rake test
  • Pender service API: docker-compose exec pender bundle exec rake test
  • Check Slack Bot: docker-compose exec check-slack-bot npm run test
  • Narcissus: docker-compose exec narcissus npm run test
  • Fetch: docker-compose exec fetch bundle exec rake test
  • Running a specific Check Web test: docker-compose exec web bash -c "cd test && rspec --example KEYWORD spec/integration_spec.rb"
  • Running a specific Check Mark test: docker-compose exec mark bash -c "cd test && rspec --example KEYWORD spec/app_spec.rb"
  • Running a specific Check API or Pender test (from within the container): bundle exec ruby -I"lib:test" test/path/to/specific_test.rb -n /.*KEYWORD.*/

Helpful one-liners and scripts

  • Update submodules to their latest commit: ./bin/git-update.sh
  • Pack your local config files: ./bin/tar-config.sh
  • Restart a service, e.g. Check API: docker-compose run api bash -c "touch tmp/restart.txt"
  • Invoke the Rails console on a service, e.g. Check API: docker-compose run api bundle exec rails c d
  • Update the Relay schema file on Check API: docker-compose run api bundle exec rake lapis:graphql:schema
  • Update the JSON API schema file on Check API: docker-compose run api bundle exec rake jsonapi:resources:update_schema

More documentation

Upgrading databases in development environment

We have recently upgraded to Postgres version 11 from 9.5. This necessitates a migration of existing databases to the new version. The migration will create a new data volume, so make sure you have enough storage space for a second copy of your databases. To migrate run these commands:

docker-compose down
docker-compose -f docker-upgradedb.yml up
docker run --rm -v check_postgres11:/var/lib/postgresql/data -u postgres -it postgres:11 bash -c "echo host all all 0.0.0.0/0 md5 >> /var/lib/postgresql/data/pg_hba.conf"
docker-compose up --remove-orphans --abort-on-container-exit

This will leave behind your original data volume and which you can clean up by running docker volume rm check_postgres.

Troubleshooting

  • If you're having trouble starting Elasticsearch on macOS, with the error container_name exited with code 137, you will need to adjust your Docker settings, as per https://www.petefreitag.com/item/848.cfm
  • If you're getting an error starting chromedriver in test mode, like the following:
docker-compose -f docker-compose.yml -f docker-test.yml up --abort-on-container-exit
Starting check_elasticsearch_1_2e69e84ccb56 ...
Starting check_chromedriver_1_6a1e9d8f5fd4  ... error
[..]
ERROR: for chromedriver  Cannot start service chromedriver: network 16d99f6d3d81011870fece7c627230b9410bdb5d0abc2d10a32f54af9f37931f not found
ERROR: Encountered errors while bringing up the project.

try this: docker-compose -f docker-compose.yml -f docker-test.yml down