We will use Docker to run all the services needed for Redash, except for Node.js which we will run locally.
Once you have the above setup, you need to create the Docker services:
This will build the Docker images and fetch some prebuilt images and then start the services
(Redash web server, worker, PostgreSQL and Redis). You can refer to the
file to see the full configuration.
# Create tables docker-compose run --rm server create_db # Create database for tests docker-compose run --rm postgres psql -h postgres -U postgres -c "create database tests"
Once all Docker services are running (can be started either by
docker-compose up or
docker-compose start), Redash is available at
While we will use webpack's dev server, we still need to build the frontend assets at least once, as some of them used for static pages (login page and such):
npm run build
To work on the frontend code, you need to use the webpack dev server, which you start with:
npm run start
Now the dev server is available at
http://localhost:8080. It rebuilds the frontend
code when you change it and refreshes the browser. All the API calls are proxied to
localhost:5000 (the server running in Docker).
The Web server will restart on code changes, but the Celery workers won't. To restart the Celery workers run:
docker-compose restart worker
(or just stop
docker-compose up and run it again)
If you pulled a new version with new packages or added some yourself, you will need to
docker-compose rebuild worker docker-compose rebuild server
docker-compose run --rm server tests
Before running tests for the first time, you need to create a database for tests:
docker-compose run --rm postgres psql -h postgres -U postgres -c "create database tests;"