4ecd044788
- Fold lines at 80 chars - Add more instructions to help bootstrap the stack
62 lines
1.7 KiB
Markdown
62 lines
1.7 KiB
Markdown
# Docker suite for development
|
|
|
|
**NOTE**: This exists only for local development. If you're interested in using
|
|
Docker for a production setup, visit the
|
|
[docs](https://listmonk.app/docs/installation/#docker) instead.
|
|
|
|
### Objective
|
|
|
|
The purpose of this Docker suite for local development is to isolate all the dev
|
|
dependencies in a Docker environment. The containers have a host volume mounted
|
|
inside for the entire app directory. This helps us to not do a full
|
|
`docker build` for every single local change, only restarting the Docker
|
|
environment is enough.
|
|
|
|
## Setting up a dev suite
|
|
|
|
To spin up a local suite of:
|
|
|
|
- PostgreSQL
|
|
- Mailhog
|
|
- Node.js frontend app
|
|
- Golang backend app
|
|
|
|
### Verify your config file
|
|
|
|
The config file provided at `dev/config.toml` will be used when running the
|
|
containerized development stack. Make sure the values set within are suitable
|
|
for the feature you're trying to develop.
|
|
|
|
### Setup DB
|
|
|
|
Running this will build the appropriate images and initialize the database.
|
|
|
|
```bash
|
|
make init-dev-docker
|
|
```
|
|
|
|
### Start frontend and backend apps
|
|
|
|
Running this start your local development stack.
|
|
|
|
```bash
|
|
make dev-docker
|
|
```
|
|
|
|
Visit `http://localhost:8080` on your browser.
|
|
|
|
### Tear down
|
|
|
|
This will tear down all the data, including DB.
|
|
|
|
```bash
|
|
make rm-dev-docker
|
|
```
|
|
|
|
### See local changes in action
|
|
|
|
- Backend: Anytime you do a change to the Go app, it needs to be compiled. Just
|
|
run `make dev-docker` again and that should automatically handle it for you.
|
|
- Frontend: Anytime you change the frontend code, you don't need to do anything.
|
|
Since `yarn` is watching for all the changes and we have mounted the code
|
|
inside the docker container, `yarn` server automatically restarts.
|