mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 02:06:29 +08:00
4db3f53c87
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.
40 lines
1.8 KiB
Markdown
40 lines
1.8 KiB
Markdown
# 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):
|
|
|
|
```sh
|
|
./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:
|
|
|
|
```sh
|
|
./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](https://github.com/discourse/discourse_docker), in particular [image/discourse_dev](https://github.com/discourse/discourse_docker/tree/master/image/discourse_dev).
|