Meanwhile, I have setup a fullly functional and standard Docker development environment, dockerizing the set of instructions in Discourse Advanced Developer Install Guide.
Check it out here: https://github.com/adab1ts/discourse/commit/f2ff9aecf31794d032349646a3dfc8bd94387363
Changes in development workflow:
Development
First time:
$ docker-compose build
$ docker-compose run discourse bundle exec rake db:create db:migrate
$ docker-compose run discourse bundle exec rake admin:create
$ docker-compose up -d
$ docker-compose exec discourse mailcatcher --ip=0.0.0.0
$ docker-compose exec discourse bundle exec sidekiq -q critical,low,default -d -l log/sidekiq.log
$ docker-compose stop
Common workflow:
$ docker-compose start
$ docker-compose exec discourse mailcatcher --ip=0.0.0.0
$ docker-compose exec discourse bundle exec sidekiq -q critical,low,default -d -l log/sidekiq.log
$ docker-compose stop
Test
$ docker-compose run -e "RAILS_ENV=test" discourse bundle exec rake db:create db:migrate
$ docker-compose run discourse bundle exec rake autospec p l=5
To link services successfully you have to reference their names as host values in config/database.yml and config/discourse.{development,test}.conf:
# config/discourse.development.conf
# comma delimited list of emails that have developer level access
developer_emails = carles@adabits.org
# redis server address
redis_host = redis
# redis server port
redis_port = 6379
# redis slave server address
redis_slave_host =
# redis slave server port
redis_slave_port = 6379
# redis database
redis_db = 0
# redis password
redis_password =
# redis sentinels eg
# redis_sentinels = 10.0.0.1:26381,10.0.0.2:26381
redis_sentinels =