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
).
- 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 likeweb_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! 🎉
- Check web client (container
web
) at http://localhost:3333 - Check service API (container
api
) at http://localhost:3000/api - usedev
as API key - Check service Admin UI (container
api
) at http://localhost:3000/admin - Check service GraphQL at http://localhost:3000/graphiql
- Check Slack Bot (container
bot
) atcheck-bot/dist
, a ZIP file that should be deployed to AWS Lambda - Pender service API (container
pender
) at http://localhost:3200/api - usedev
as API key - Alegre service API (container
alegre
) at http://localhost:3100 - MinIO storage service UI (container
minio
) at http://localhost:9000 - useAKIAIOSFODNN7EXAMPLE
/wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
to login - Elasticsearch API (container
elasticsearch
) at http://localhost:9200 - Kibana Elasticsearch UI (container
kibana
) at http://localhost:5601 - PostgreSQL (container
postgres
) atlocalhost:5432
(use a standard Pg admin tool to connect) - Chromedriver (container
chromedriver
in test mode) at http://localhost:4444/wd/hub - Chromedriver VNC at
localhost:5900
(use a standard VNC client to connect with passwordsecret
) - Narcissus screenshot service (container
narcissus
) at http://localhost:8687 - Fetch fact-checking service (container
fetch
) at http://localhost:8687/about
- 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.*/
- 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
- Check API service
- Check Web application
- Pender API service
- Alegre API service
- Narcissus service
- Fetch service
- Check Slack bot
- Check API bots
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
.
- 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