diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ade3e2c9f63895813fd91039d138e8a2e2fd3394 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,46 @@ +# build frontend +FROM node:lts-alpine3.12 AS fe-builder + +COPY ./assets /assets + +WORKDIR /assets + +RUN set -ex \ + && apk upgrade \ + && yarn install \ + && yarn run build + +# build backend +FROM golang:1.15.0-alpine3.12 AS be-builder + +ENV GO111MODULE on + +COPY . /go/src/github.com/HFO4/cloudreve +COPY --from=fe-builder /assets/build/ /go/src/github.com/HFO4/cloudreve/assets/build/ + +WORKDIR /go/src/github.com/HFO4/cloudreve + +RUN set -ex \ + && apk upgrade \ + && apk add gcc libc-dev git \ + && export COMMIT_SHA=$(git rev-parse --short HEAD) \ + && export VERSION=$(git describe --tags) \ + && (cd && go get github.com/rakyll/statik) \ + && statik -src=assets/build/ -include=*.html,*.js,*.json,*.css,*.png,*.svg,*.ico -f \ + && go install -ldflags "-X 'github.com/HFO4/cloudreve/pkg/conf.BackendVersion=${VERSION}' \ + -X 'github.com/HFO4/cloudreve/pkg/conf.LastCommit=${COMMIT_SHA}'\ + -w -s" + +# build final image +FROM alpine:3.12 AS dist + +LABEL maintainer="mritd " + +COPY --from=be-builder /go/bin/cloudreve /cloudreve/cloudreve + +RUN apk upgrade \ + && apk add bash tzdata \ + && ln -s /cloudreve/cloudreve /usr/bin/cloudreve \ + && rm -rf /var/cache/apk/* + +ENTRYPOINT ["cloudreve"]