diff --git a/README.md b/README.md index 67a44209d..20c511d5e 100644 --- a/README.md +++ b/README.md @@ -20,15 +20,12 @@ Tech Stack * Storage: PostgreSQL/Redis/Cassandra * Parser: Java (powered by [clarity](https://github.com/skadistats/clarity)) -Quickstart +Quickstart (Docker) ---- -* Using Docker will let you run the code in a container with all dependencies properly installed. * Install Docker: `curl -sSL https://get.docker.com/ | sh` * Clone the repo: `git clone https://github.com/yasp-dota/yasp` * Go into the directory: `cd yasp` -* Create .env file with required config values in KEY=VALUE format (see config.js for a full listing of options) `cp .env_example .env` - * `STEAM_API_KEY` You need this in order to access the Steam Web API. - * `STEAM_USER, STEAM_PASS` The retriever requires a Steam account in order to fetch replay salts. We recommend creating a new account for this purpose (you won't be able to log into the account while the retriever is using it). If you don't care about getting replay salts/downloading replays then you can skip this step. +* Build the Docker container: `sudo docker build -t yasp/yasp .` * Start a new container running the image, and map your local directory into the container: `sudo docker run -v $(pwd):/usr/src/yasp -di --name yasp --net=host yasp/yasp:latest` * Start the external dependencies in separate containers. * `sudo docker run -d --name postgres --net=host postgres:9.5` @@ -37,20 +34,17 @@ Quickstart * Initialize Postgres: `sudo docker exec -i postgres psql -U postgres < sql/init.sql` * Create tables: `sudo docker exec -i postgres psql -U postgres yasp < sql/create_tables.sql` * Set up Cassandra (optional): `sudo docker exec -i cassandra cqlsh < sql/cassandra.cql` +* Create .env file with required config values in KEY=VALUE format (see config.js for a full listing of options) `cp .env_example .env` + * `STEAM_API_KEY` You need this in order to access the Steam Web API. + * `STEAM_USER, STEAM_PASS` The retriever requires a Steam account in order to fetch replay salts. We recommend creating a new account for this purpose (you won't be able to log into the account while the retriever is using it). If you don't care about getting replay salts/downloading replays then you can skip this step. * Get a terminal into the running container: `sudo docker exec -it yasp bash` -* Build inside the container: `npm run build` * Start the services you want to run: - * `pm2 start profiles/basic.json` This starts all the basic services to be able to open the site in a browser and request parses by ID (which is a useful end-to-end test). Use `profiles/everything.json` to start everything. - * `pm2 start svc/web.js --watch` This starts a specific service and watches it for changes. - * `pm2 logs web` You can use this command to inspect the output of a service. - * `pm2 delete all` Stop and remove all the services. -* Alternatively, if you have Docker Compose [installed](https://docs.docker.com/compose/install/) you can just run `docker-compose up`. - * 3 containers will be built and launched - one with postgres database, one with redis and one with web service. - * Database is inited and tables are created automatically. - * By default, minimal configuration necessairy to open the site in a browser and request parses by ID is started. This can be overridden via `docker-compose.override.yml`. - * `sudo docker exec -it yasp_web_1 bash` will give you a terminal into the running web container. + * `pm2 start profiles/basic.json` This starts all the basic services to be able to read the API and request parses (which is a useful end-to-end test). Use `profiles/everything.json` to start everything. + * Useful PM2 commands: + * `pm2 start svc/web.js --watch` This starts a specific service and watches it for changes. + * `pm2 logs web` You can use this command to inspect the output of a service. + * `pm2 delete all` Stop and remove all the services. * Useful commands - * `npm run watch`: If you want to make changes to client side JS, you will want to run the watch script in order to automatically rebuild after making changes. * `npm test` runs the full test suite. Use `mocha` for more fine-grained control over the tests you want to run. * `node tasks/updateconstants` pulls latest constants data and saves to `json` directory. * Get some starter data @@ -61,6 +55,14 @@ Quickstart * Submit a pull request. Wait for it to be reviewed and merged. * Congratulations! You're a contributor. +Docker Compose +---- +* Alternatively, if you have Docker Compose [installed](https://docs.docker.com/compose/install/) you can just run `docker-compose up`. + * 3 containers will be built and launched - one with postgres database, one with redis and one with web service. + * Database is inited and tables are created automatically. + * By default, minimal configuration necessairy to open the site in a browser and request parses by ID is started. This can be overridden via `docker-compose.override.yml`. + * `sudo docker exec -it yasp_web_1 bash` will give you a terminal into the running web container. + Getting Help ---- * Feel free to open a new issue to ask questions/get help!