Git Product home page Git Product logo

check's Introduction

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 [email protected]: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 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 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 client test: docker-compose exec web bash -c "cd test && rspec --example KEYWORD spec/integration_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

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

How to stop all containers & images to make it clean

  • For stopping all containers & removing the containers
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
  • For removing all images
docker rmi $(docker images -a -q)

check's People

Contributors

infojunkie avatar caiosba avatar clarissacastella avatar huslage avatar melsawy avatar bnfinet avatar danielafeitosa avatar adamhooper avatar zda avatar dragz17 avatar mhamzawey avatar hfikry92 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.