From bb18db9e13cfd915e4a619378ba5da3fba3518c0 Mon Sep 17 00:00:00 2001 From: mingcheng Date: Fri, 28 Oct 2022 13:34:23 +0800 Subject: [PATCH] ci: update dockerfile and makefile for sqlite embed issue --- Dockerfile | 54 ++++++++++++++++++++++++++++++++++-------------------- Makefile | 2 +- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4c46698b..8b55d58f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,40 +6,54 @@ COPY . /answer WORKDIR /answer RUN make install-ui-packages ui && mv ui/build /tmp -FROM golang:1.18 AS golang-builder -LABEL maintainer="aichy" +# stage2 build the main binary within static resource +FROM golang:1.19-alpine AS golang-builder +LABEL maintainer="aichy@sf.com" + +ARG GOPROXY +ENV GOPROXY ${GOPROXY:-direct} ENV GOPATH /go ENV GOROOT /usr/local/go ENV PACKAGE github.com/answerdev/answer -ENV GOPROXY https://goproxy.cn,direct ENV BUILD_DIR ${GOPATH}/src/${PACKAGE} -# Build + +ARG TAGS="sqlite sqlite_unlock_notify" +ENV TAGS "bindata timetzdata $TAGS" +ARG CGO_EXTRA_CFLAGS + COPY . ${BUILD_DIR} WORKDIR ${BUILD_DIR} COPY --from=node-builder /tmp/build ${BUILD_DIR}/ui/build -RUN make clean build && \ - cp answer /usr/bin/answer && \ - mkdir -p /data/upfiles && chmod 777 /data/upfiles && \ - mkdir -p /data/i18n && chmod 777 /data/i18n && cp -r i18n/*.yaml /data/i18n +RUN apk --no-cache add build-base git \ + && make clean build \ + && cp answer /usr/bin/answer + +RUN mkdir -p /data/upfiles && chmod 777 /data/upfiles \ + && mkdir -p /data/i18n && cp -r i18n/*.yaml /data/i18n + +# stage3 copy the binary and resource files into fresh container +FROM alpine +LABEL maintainer="maintainers@sf.com" -FROM debian:bullseye ENV TZ "Asia/Shanghai" -RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \ - && sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \ - && echo "Asia/Shanghai" > /etc/timezone \ - && apt -y update \ - && apt -y upgrade \ - && apt -y install ca-certificates openssl tzdata curl netcat dumb-init \ - && apt -y autoremove \ - && mkdir -p /tmp/cache - -COPY --from=golang-builder /data /data -VOLUME /data +RUN apk update \ + && apk --no-cache add \ + bash \ + ca-certificates \ + curl \ + dumb-init \ + gettext \ + openssh \ + sqlite \ + gnupg \ + && echo "Asia/Shanghai" > /etc/timezone COPY --from=golang-builder /usr/bin/answer /usr/bin/answer +COPY --from=golang-builder /data /data COPY /script/entrypoint.sh /entrypoint.sh RUN chmod 755 /entrypoint.sh +VOLUME /data EXPOSE 80 ENTRYPOINT ["/entrypoint.sh"] diff --git a/Makefile b/Makefile index 76ae07d8..9feb089d 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ DOCKER_CMD=docker #GO_ENV=CGO_ENABLED=0 Revision=$(shell git rev-parse --short HEAD) -GO_FLAGS=-ldflags="-X main.Version=$(VERSION) -X main.Revision=$(Revision) -X 'main.Time=`date`' -extldflags -static" +GO_FLAGS=-ldflags="-X main.Version=$(VERSION) -X 'main.Revision=$(Revision)' -X 'main.Time=`date`' -extldflags -static" GO=$(GO_ENV) $(shell which go) build: