Skip to main content

Docker Setup

Pre-requisites

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 a version equal to or higher than the following.

$ docker --version
Docker version 25.0.4, build 1a576c5
$ docker-compose --version
docker-compose version 2.24.7

Development environment

  1. Clone the repository.

    git clone https://github.com/chatwoot/chatwoot.git
  2. Make a copy of the example environment file and modify it as required.

    # navigate to Chatwoot
    cd chatwoot
    cp .env.example .env
    # update redis and postgres passwords
    nano .env
    # update docker-compose.yml with the same postgres password
    nano docker-compose.yml
  3. Build the images.

    # build base image first
    docker compose build base

    # build the server and worker
    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 http://0.0.0.0:3000/
    • Access Mailhog inbox by visiting http://0.0.0.0:8025/ (You will receive all emails going out of the application here)

    Login with credentials

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

    docker-compose down

Running RSpec tests

For running the complete RSpec tests,

docker-compose run --rm rails bundle exec rspec

For running specific test,

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:

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.

docker-compose run --rm --service-port rails

Troubleshooting

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.

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