listmonk/dev
2022-01-19 09:30:23 -05:00
..
.gitignore Provide a default configuration file for containerized development 2022-01-19 09:30:23 -05:00
app.Dockerfile
config.toml Provide a default configuration file for containerized development 2022-01-19 09:30:23 -05:00
docker-compose.yml
README.md Spiffy up the continerized dev README 2022-01-19 09:29:04 -05: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 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.

make init-dev-docker

Start frontend and backend apps

Running this start your local development stack.

make dev-docker

Visit http://localhost:8080 on your browser.

Tear down

This will tear down all the data, including DB.

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.