diff --git a/Dockerfile b/Dockerfile index 3ee9121..56a201a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,43 @@ -FROM golang:alpine as builder +FROM golang:alpine AS deps + +WORKDIR /app +COPY go.mod go.sum ./ +RUN sed -i '/replace/d' go.mod +RUN go mod download + +#---------------------------------------------------------------------------------------------- + +FROM golang:alpine AS builder WORKDIR /app -COPY . . - RUN apk add git -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" . +RUN go install github.com/beego/bee/v2@latest -RUN ls /app +WORKDIR /oc-aggregator -FROM scratch +COPY --from=deps /go/pkg /go/pkg +COPY --from=deps /app/go.mod /app/go.sum ./ + +RUN export CGO_ENABLED=0 && \ + export GOOS=linux && \ + export GOARCH=amd64 && \ + export BUILD_FLAGS="-ldflags='-w -s'" + +COPY . . + +RUN sed -i '/replace/d' go.mod +RUN bee pack +RUN mkdir -p /app/extracted && tar -zxvf oc-aggregator.tar.gz -C /app/extracted + +#---------------------------------------------------------------------------------------------- + +FROM golang:alpine WORKDIR /app - -COPY --from=builder /app/oc-discovery /usr/bin/ -COPY docker_aggregator.json /etc/oc/aggregator.json +COPY --from=builder /app/extracted/oc-aggregator /usr/bin/ +COPY --from=builder /app/extracted/aggregator.json /etc/oc/aggregator.json EXPOSE 8080 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e208c51 --- /dev/null +++ b/Makefile @@ -0,0 +1,24 @@ +.DEFAULT_GOAL := all + +build: clean + bee pack + +run: + ./oc-aggregator + +clean: + rm -rf oc-aggregator + +docker: + DOCKER_BUILDKIT=1 docker build -t oc/oc-aggregator:0.0.1 -f Dockerfile . + docker tag oc/oc-aggregator:0.0.1 oc/oc-aggregator:latest + +publish-kind: + kind load docker-image oc/oc-aggregator:0.0.1 --name opencloud + +publish-registry: + @echo "TODO" + +all: docker publish-kind publish-registry + +.PHONY: build run clean docker publish-kind publish-registry \ No newline at end of file diff --git a/main.go b/main.go index 227cf43..1c4665d 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( oclib "cloud.o-forge.io/core/oc-lib" beego "github.com/beego/beego/v2/server/web" + "github.com/beego/beego/v2/server/web/filter/cors" ) const appname = "oc-aggregator" @@ -36,7 +37,13 @@ func main() { beego.BConfig.Listen.HTTPPort = o.GetIntDefault("port", 8080) beego.BConfig.WebConfig.DirectoryIndex = true beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" - + beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{ + AllowAllOrigins: true, + AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, + AllowHeaders: []string{"Origin", "Authorization", "Content-Type"}, + ExposeHeaders: []string{"Content-Length", "Content-Type"}, + AllowCredentials: true, + })) beego.Run() }