Using Docker for Development

Using Docker to build software allows you to run and test code without having to worry about external dependencies such as cache servers and databases.

Warning

The following setup is only meant for local development. See Docker for production use of Docker.

Local Prerequisites

You will need to install Docker and docker-compose before performing the following steps.

To build assets you will need node and webpack module bundler.

Note

Our configuration exposes PostgreSQL, Redis and Elasticsearch ports. If you have problems running this docker file because of port conflicts, you can remove ‘ports’ section from docker-compose.yml

Usage

  1. Install JavaScript dependencies

    $ npm install
    
  2. Prepare static assets

    $ npm run build-assets
    
  3. Build emails

    $ npm run build-emails
    
  4. Build the containers using docker-compose

    $ docker-compose build
    
  5. Prepare the database

    $ docker-compose run web python manage.py migrate
    $ docker-compose run web python manage.py collectstatic
    $ docker-compose run web python manage.py populatedb --createsuperuser
    

    The --createsuperuser switch creates an admin account for admin@example.com with the password set to admin.

  6. Run the containers

    $ docker-compose up
    

By default, the application is started in debug mode, will automatically reload code and is configured to listen on port 8000.