From 2ec67fc26a5ad0886c8f07dc8f6b503ec8cc803b Mon Sep 17 00:00:00 2001 From: Rob Loranger Date: Sat, 14 Sep 2019 10:59:35 -0700 Subject: [PATCH] refactor Dockerfile to work with current version this changes the Dockerfile a bit to work with the current version 0.10.0 of writefreely, and removes the docker-setup script for now. Kind of a work in progress but wanted to share with those interested. --- .dockerignore | 2 ++ Dockerfile | 44 +++++++++++++++------------------------ Makefile | 3 +++ config/config.go | 3 ++- docker-compose.sqlite.yml | 16 ++++++++++++++ docker-compose.yml | 10 ++++----- docker-setup.sh | 4 ---- go.mod | 2 +- 8 files changed, 45 insertions(+), 39 deletions(-) create mode 100644 docker-compose.sqlite.yml delete mode 100755 docker-setup.sh diff --git a/.dockerignore b/.dockerignore index 96f81bc..7620946 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,4 @@ Dockerfile .git +config.ini +writefreely.db \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 2ae05a6..31285cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,35 +1,25 @@ -# Build image -FROM golang:1.12-alpine as build +FROM golang:1.12-alpine AS build -RUN apk add --update nodejs nodejs-npm make g++ git sqlite-dev -RUN npm install -g less less-plugin-clean-css -RUN go get -u github.com/jteeuwen/go-bindata/... +RUN apk add nodejs nodejs-npm make g++ ca-certificates git sqlite-dev && \ + npm install -g less less-plugin-clean-css && \ + go get -u github.com/jteeuwen/go-bindata/... -RUN mkdir -p /go/src/github.com/writeas/writefreely -WORKDIR /go/src/github.com/writeas/writefreely +WORKDIR /src +COPY ./go.mod ./go.sum ./ +RUN go mod download COPY . . +RUN make assets ui && cd cmd/writefreely && go build -v -tags='sqlite' -ENV GO111MODULE=on -RUN make build \ - && make ui -RUN mkdir /stage && \ - cp -R /go/bin \ - /go/src/github.com/writeas/writefreely/templates \ - /go/src/github.com/writeas/writefreely/static \ - /go/src/github.com/writeas/writefreely/pages \ - /go/src/github.com/writeas/writefreely/keys \ - /go/src/github.com/writeas/writefreely/cmd \ - /stage +RUN mkdir -p \ + /home/writefreely/static /home/writefreely/templates /home/writefreely/pages && \ + cp -r templates/ pages/ static/ /home/writefreely -# Final image -FROM alpine:3.8 +FROM alpine AS final -RUN apk add --no-cache openssl ca-certificates -COPY --from=build --chown=daemon:daemon /stage /go +# TODO user nobody or similar +COPY --from=build /src/cmd/writefreely/writefreely /bin +COPY --from=build /home /home -WORKDIR /go -VOLUME /go/keys EXPOSE 8080 -USER daemon - -ENTRYPOINT ["cmd/writefreely/writefreely"] +WORKDIR /home/writefreely +ENTRYPOINT [ "writefreely" ] \ No newline at end of file diff --git a/Makefile b/Makefile index c88ac79..95dd05e 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,9 @@ ci: ci-assets deps build: assets deps cd cmd/writefreely; $(GOBUILD) -v -tags='sqlite' +build-no-git: assets deps + cd cmd/writefreely; $(GOCMD) build -v -tags='sqlite' + build-no-sqlite: assets-no-sqlite deps-no-sqlite cd cmd/writefreely; $(GOBUILD) -v -o $(BINARY_NAME) diff --git a/config/config.go b/config/config.go index e27ffb9..71c60e6 100644 --- a/config/config.go +++ b/config/config.go @@ -12,8 +12,9 @@ package config import ( - "gopkg.in/ini.v1" "strings" + + "gopkg.in/ini.v1" ) const ( diff --git a/docker-compose.sqlite.yml b/docker-compose.sqlite.yml new file mode 100644 index 0000000..31594fb --- /dev/null +++ b/docker-compose.sqlite.yml @@ -0,0 +1,16 @@ +version: "3" +services: + web: + image: robjloranger/writefreely:v0.10.0 + volumes: + - ./keys:/home/writefreely/keys + - ./config.ini:/home/writefreely/config.ini + - ./writefreely.db:/home/writefreely/writefreely.db + ports: + - "8080:8080" + networks: + - writefreely + restart: unless-stopped + +networks: + writefreely: \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 29a841e..65dbf0d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,10 @@ version: "3" services: web: - build: . + image: robjloranger/writefreely:v0.10.0 volumes: - - "web-data:/go/src/app" - - "./config.ini.example:/go/src/app/config.ini" + - ./keys:/home/writefreely/keys + - ./config.ini:/home/writefreely/config.ini ports: - "8080:8080" networks: @@ -15,7 +15,6 @@ services: db: image: "mariadb:latest" volumes: - - "./schema.sql:/tmp/schema.sql" - db-data:/var/lib/mysql/data networks: - writefreely @@ -25,8 +24,7 @@ services: restart: unless-stopped volumes: - web-data: db-data: networks: - writefreely: + writefreely: \ No newline at end of file diff --git a/docker-setup.sh b/docker-setup.sh deleted file mode 100755 index 46f41f3..0000000 --- a/docker-setup.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -docker-compose exec db sh -c 'exec mysql -u root -pchangeme writefreely < /tmp/schema.sql' -docker exec writefreely_web_1 writefreely --gen-keys -docker exec -it writefreely_web_1 writefreely --config \ No newline at end of file diff --git a/go.mod b/go.mod index cc5fc57..5e040ba 100644 --- a/go.mod +++ b/go.mod @@ -63,7 +63,7 @@ require ( github.com/writeas/slug v1.2.0 github.com/writeas/web-core v1.0.0 github.com/writefreely/go-nodeinfo v1.2.0 - golang.org/x/crypto v0.0.0-20190208162236-193df9c0f06f // indirect + golang.org/x/crypto v0.0.0-20190208162236-193df9c0f06f golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1 // indirect golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 // indirect golang.org/x/sys v0.0.0-20190209173611-3b5209105503 // indirect