listmonk/dev/README.md

63 lines
1.7 KiB
Markdown
Raw Normal View History

2021-12-02 01:47:14 +08:00
# 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.
2021-12-02 01:47:14 +08:00
### 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.
2021-12-02 01:47:14 +08:00
## Setting up a dev suite
To spin up a local suite of:
2021-12-02 01:47:14 +08:00
- 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.
2021-12-02 01:47:14 +08:00
### Setup DB
Running this will build the appropriate images and initialize the database.
2021-12-02 01:47:14 +08:00
```bash
make init-dev-docker
```
### Start frontend and backend apps
Running this start your local development stack.
2021-12-02 01:47:14 +08:00
```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.