Merge branch 'master' into events
This commit is contained in:
commit
bddae00a1e
28
Dockerfile
Normal file
28
Dockerfile
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# Dockerfile for the blog.
|
||||||
|
#
|
||||||
|
# Building:
|
||||||
|
#
|
||||||
|
# docker build -t blog .
|
||||||
|
#
|
||||||
|
# Running:
|
||||||
|
#
|
||||||
|
# # listen on localhost:8000 and use /home/user/www as the user root
|
||||||
|
# docker run -p 8000:80 -v /home/user/www:/data/www blog
|
||||||
|
#
|
||||||
|
# Running and Backgrounding:
|
||||||
|
#
|
||||||
|
# # run it with a name to start with
|
||||||
|
# docker run -d --name blog -v /home/user/www:/data/www blog
|
||||||
|
#
|
||||||
|
# # later...
|
||||||
|
# docker start blog
|
||||||
|
FROM golang:1.10
|
||||||
|
|
||||||
|
WORKDIR /go/src/github.com/kirsle/blog
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN go get -d -v ./...
|
||||||
|
RUN go install -v ./...
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
CMD ["blog", "-a", ":80", "/data/www"]
|
12
Makefile
12
Makefile
|
@ -2,7 +2,7 @@ SHELL := /bin/bash
|
||||||
|
|
||||||
VERSION=$(shell grep -e 'Version' blog.go | head -n 1 | cut -d '"' -f 2)
|
VERSION=$(shell grep -e 'Version' blog.go | head -n 1 | cut -d '"' -f 2)
|
||||||
BUILD=$(shell git describe --always)
|
BUILD=$(shell git describe --always)
|
||||||
CURDIR=$(shell curdir)
|
CURDIR=$(shell pwd)
|
||||||
|
|
||||||
# Inject the build version (commit hash) into the executable.
|
# Inject the build version (commit hash) into the executable.
|
||||||
LDFLAGS := -ldflags "-X main.Build=$(BUILD)"
|
LDFLAGS := -ldflags "-X main.Build=$(BUILD)"
|
||||||
|
@ -38,3 +38,13 @@ clean:
|
||||||
.PHONY: hardclean
|
.PHONY: hardclean
|
||||||
hardclean: clean
|
hardclean: clean
|
||||||
rm -rf root/.private
|
rm -rf root/.private
|
||||||
|
|
||||||
|
# `make docker.build` to build the Docker image
|
||||||
|
.PHONY: docker.build
|
||||||
|
docker.build:
|
||||||
|
docker build -t blog .
|
||||||
|
|
||||||
|
# `make docker.run` to run the docker image
|
||||||
|
.PHONY: docker.run
|
||||||
|
docker.run:
|
||||||
|
docker run --rm --name blog_debug -p 8000:80 -v "$(CURDIR)/user-root:/data/www:z" blog
|
||||||
|
|
38
README.md
38
README.md
|
@ -4,6 +4,8 @@ This is a web blog and personal homepage engine written in Go. It includes a
|
||||||
full-featured web blog (with tags, archive views, etc.) and can serve static
|
full-featured web blog (with tags, archive views, etc.) and can serve static
|
||||||
web assets, Go HTML templates and Markdown pages.
|
web assets, Go HTML templates and Markdown pages.
|
||||||
|
|
||||||
|
# Features
|
||||||
|
|
||||||
## Zero Configuration
|
## Zero Configuration
|
||||||
|
|
||||||
Blog is designed to be extremely easy to run: just give it a path to your
|
Blog is designed to be extremely easy to run: just give it a path to your
|
||||||
|
@ -16,6 +18,8 @@ blog $HOME/www
|
||||||
See `blog -h` for command line arguments, for example to make it listen on a
|
See `blog -h` for command line arguments, for example to make it listen on a
|
||||||
different port number.
|
different port number.
|
||||||
|
|
||||||
|
The blog database is kept on disk as JSON files under the document root.
|
||||||
|
|
||||||
## Dual Template System
|
## Dual Template System
|
||||||
|
|
||||||
Whenever a web request is handled by the Blog program, it checks your
|
Whenever a web request is handled by the Blog program, it checks your
|
||||||
|
@ -68,6 +72,40 @@ make run
|
||||||
./go-reload cmd/blog/main.go [options] [/path/to/document/root]
|
./go-reload cmd/blog/main.go [options] [/path/to/document/root]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
This app includes a Dockerfile. Type `make docker.build` to build the
|
||||||
|
Docker image.
|
||||||
|
|
||||||
|
The Docker container uses the user document root at `/data/www`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t blog .
|
||||||
|
docker run --rm --name blog_debug -p 8000:80 -v $(CURDIR)/user-root:/data/www blog
|
||||||
|
```
|
||||||
|
|
||||||
|
### Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make docker.build
|
||||||
|
make docker.run
|
||||||
|
```
|
||||||
|
|
||||||
|
### Docker Image
|
||||||
|
|
||||||
|
* Exposes port 80 for the web server
|
||||||
|
* User document root is mounted at `/data/www`
|
||||||
|
|
||||||
|
So to run the Docker image and have it listen on `localhost:8000` on the
|
||||||
|
host and bind the user document root to `/home/user/www`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -p 8000:80 -v /home/user/www:/data/www blog
|
||||||
|
```
|
||||||
|
|
||||||
|
You may also run `make docker.run` to run the Docker image on port 8000 using
|
||||||
|
the `./user-root` directory
|
||||||
|
|
||||||
## Recommendation: Redis
|
## Recommendation: Redis
|
||||||
|
|
||||||
It is recommended to use the [Redis](https://redis.io) caching server in
|
It is recommended to use the [Redis](https://redis.io) caching server in
|
||||||
|
|
|
@ -38,5 +38,11 @@ func (c Contact) Validate() error {
|
||||||
if len(c.Message) == 0 {
|
if len(c.Message) == 0 {
|
||||||
return errors.New("message is required")
|
return errors.New("message is required")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Spam bot traps.
|
||||||
|
if c.Trap1 != "" || c.Trap2 != "http://" {
|
||||||
|
return errors.New("message can't be delivered")
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user