Skip to main content

Docker Setup


Before proceeding, make sure you have the latest version of docker and docker-compose installed.

As of now[at the time of writing this doc], we recommend

```bash$ docker --versionDocker version 19.03.3, build a872fc2f86$ docker-compose --versiondocker-compose version 1.25.3, build d4d1b42b```

Development environment#

  1. Clone the repository.

    $ git clone
  2. Make a copy of the example environment file and modify it as required.

    $ cp .env.example .env# update redis and postgres passwordsnano .env# update docker-compose.yml with the same postgres passwordnano docker-compose.yml
  3. Build the images.

    $ docker-compose build
  4. After building the image or destroying the stack, you would have to reset the database using the following command.

    $ docker-compose run --rm rails bundle exec rails db:chatwoot_prepare
  5. To run the app,

    $ docker-compose up
    • Access the rails app frontend by visiting
    • Access Mailhog inbox by visiting (You will receive all emails going out of the application here)

    Login with credentials#

        url: http://localhost:3000    user_name:    password: Password1!
  6. To stop the app,

    $ docker-compose down

Running RSpec tests#

For running the complete RSpec tests,

```bash$ docker-compose run --rm rails bundle exec rspec```

For running specific test,

```bash$ docker-compose run --rm rails bundle exec rspec spec/<path-to-file>:<line-number>```

Production environment#

To debug the production build locally, set SECRET_KEY_BASE environment variable in your .env file and then run the below commands:

```bash$ docker-compose -f docker-compose.production.yaml build$ docker-compose -f docker-compose.production.yaml up```

Debugging mode#

To use debuggers like byebug or binding.pry, use the following command to bring up the app instead of docker-compose up.

```bash   $ docker-compose run --rm --service-port rails```


If there is an update to any of the following

  • dockerfile
  • gemfile
  • package.json
  • schema change

Make sure to rebuild the containers and run db:reset.

```bash$ docker-compose down$ docker-compose build$ docker-compose run --rm rails bundle exec rails db:reset$ docker-compose up```