Skip to content

Commit

Permalink
Merge pull request #1 from mr-karan/docker
Browse files Browse the repository at this point in the history
WIP: Create Docker release
  • Loading branch information
knadh authored Jul 12, 2019
2 parents 6409c9a + 1534c46 commit 3d3af8c
Show file tree
Hide file tree
Showing 7 changed files with 103 additions and 3 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ frontend/yarn.lock

config.toml
node_modules
listmonk
15 changes: 14 additions & 1 deletion .goreleaser.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
env:
- GO111MODULE=on
- RELEASE_BUILDS=dist/listmonk_darwin_amd64/listmonk dist/listmonk_linux_amd64/listmonk dist/listmonk_windows_amd64//listmonk.exe
- CGO_ENABLED=0
- RELEASE_BUILDS=dist/listmonk_darwin_amd64/listmonk dist/listmonk_linux_amd64/listmonk dist/listmonk_windows_amd64/listmonk.exe

before:
hooks:
Expand All @@ -27,3 +28,15 @@ archives:
- README.md
- INSTALL.md
- LICENSE
dockers:
-
goos: linux
goarch: amd64
binaries:
- listmonk
image_templates:
- "listmonk/listmonk:latest"
- "listmonk/listmonk:{{ .Tag }}"
dockerfile: Dockerfile
extra_files:
- config.toml.sample
6 changes: 6 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM alpine:latest AS deploy
RUN apk --no-cache add ca-certificates
WORKDIR /listmonk
COPY listmonk .
COPY config.toml.sample config.toml
CMD ["./listmonk"]
17 changes: 17 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,20 @@
- Run `./listmonk --new-config` to generate a sample `config.toml` and add your configuration (SMTP and Postgres DB credentials primarily).
- `./listmonk --install` to setup the DB.
- Visit `http://localhost:9000`.

## Running on Docker

You can checkout the [docker-compose.yml](docker-compose.yml) to get an idea of how to run `listmonk` with `PostgreSQL` together using Docker.

- `docker-compose up -d` to run all the services together.
- `docker-compose run --rm app ./listmonk --install` to setup the DB.
- Visit `http://localhost:9000`.

### Demo Setup

`docker-compose.yml` includes a demo setup to quickly try out `listmonk`. It spins up PostgreSQL and listmonk app containers without any persistent data.

- Run `docker-compose up -d demo-db demo-app`.
- Visit `http://localhost:9000`.

_NOTE_: This setup will delete the data once you kill and remove the containers. This setup is NOT intended for production use.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ listmonk is a standalone, self-hosted, newsletter and mailing list manager. It i
- Visit `http://localhost:9000`.
- Since there is no user auth yet, it's best to put listmonk behind a proxy like Nginx and setup basicauth on all endpoints except for the few endpoints that need to be public. Here is a [sample nginx config](https://github.com/knadh/listmonk/wiki/Production-Nginx-config) for production use.

### Running on Docker

You can checkout the [docker-compose.yml](docker-compose.yml) to get an idea of how to run `listmonk` with `PostgreSQL` together using Docker.

- `docker-compose up -d` to run all the services together.
- `docker-compose run --rm app ./listmonk --install` to setup the DB.
- Visit `http://localhost:9000`.

Alternatively, to run a demo of listmonk, you can quickly spin up a container `docker-compose up -d demo-db demo-app`. NOTE: This doesn't persist Postgres data after you stop and remove the container, this setup is intended only for demo. _DO NOT_ use the demo setup in production.

### Help and docs

[Help and documentation](https://listmonk.app/docs) (work in progress).
Expand Down
4 changes: 2 additions & 2 deletions config.toml.sample
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ max_send_errors = 1000

# Database.
[db]
host = "localhost"
host = "demo-db"
port = 5432
user = "listmonk"
password = ""
password = "listmonk"
database = "listmonk"
ssl_mode = "disable"

Expand Down
53 changes: 53 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# NOTE: This docker-compose.yml is meant to be just an example guideline
# on how you can achieve the same. It is not intented to run out of the box
# and you must edit the below configurations to suit your needs.

version: "3.7"

x-app-defaults: &app-defaults
restart: unless-stopped
image: listmonk/listmonk:latest
ports:
- "9000:9000"
networks:
- listmonk

x-db-defaults: &db-defaults
image: postgres:11
ports:
- "9432:5432"
networks:
- listmonk
environment:
- POSTGRES_PASSWORD=listmonk
- POSTGRES_USER=listmonk
- POSTGRES_DB=listmonk
restart: unless-stopped

services:
db:
<<: *db-defaults
volumes:
- type: volume
source: listmonk-data
target: /var/lib/postgresql/data

app:
<<: *app-defaults
depends_on:
- db

demo-db:
<<: *db-defaults

demo-app:
<<: *app-defaults
command: [sh, -c, "yes | ./listmonk --install && ./listmonk"]
depends_on:
- demo-db

networks:
listmonk:

volumes:
listmonk-data:

0 comments on commit 3d3af8c

Please sign in to comment.