# 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.

If for any reason you want to reset your database run

```sh
sudo rm -fr tmp/postgres
```

## 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).