This PR is intended to work in concert with the discourse_docker changes in https://github.com/discourse/discourse_docker/pull/292. I have used those changes to build a local "discourse_dev" image, and then _**these**_ changes to easily spin up and work on Discourse and plugin functionality. It's working well for me, but of course YMMV. Add `--init` and `--patch` options to bin/docker/boot_dev to make it easier to spin up a container running Discourse out of a development directory. Add `bin/docker/README.md` to explain how to go about using the docker command-line tools. Tweak the Docker command-line tools to use the `-u` option to specify user rather than changing to the user "inside" the container via `chpst` (This way, we don't have to explicitly specify the HOME environment variable, either.) Add `bin/docker/shell` command to make it easy to jump inside the running container.
1.8 KiB
Developing using Docker
Since Discourse runs in Docker, why not develop there? If you have Docker installed, you should be able to run Discourse directly from your source directory using a Discourse development container.
Step-by-step
It should be as easy as (from your source root):
./bin/docker/boot_dev --init
# wait while:
# - dependencies are installed,
# - the database is migrated, and
# - an admin user is created (you'll need to interact with this)
./bin/docker/rails s
... then open a browser on http://localhost:3000 and voila!, you should see Discourse.
When you're done, you can kill the Docker container with:
./bin/docker/shutdown_dev
Note that data is persisted between invocations of the container in your source root tmp/postgres
directory.
Caveats
There seems to be an issue with the ember-data-source gem installed by default (2.3.0.beta.5). It's missing its dist
directory. I've worked around this by acquiring that commit, building the distribution locally, and patching it into /usr/local/lib/ruby/gems/2.3.0/gems/ember-data-source-2.3.0.beta.5
by hand. I believe later versions of the gem fix this, but the very next version (2.3.0 proper) bumps the ember-source dependency up to 2.0, which Discourse isn't using yet.
You can get boot_dev
to patch for you by passing --patch local/path/to/ember-data-source/dist
on the command-line. You should only have to do this once (like --init
).
Other Notes
Where is the container image/Dockerfile defined?
The Dockerfile comes from discourse/discourse_docker on GitHub, in particular image/discourse_dev.