jzero-io / jzero

Used to create project from templates and generate Server/Client/Model code by proto/api/sql file.
https://jzero.jaronnie.com/
MIT License
47 stars 3 forks source link

docker build failing for example. #58

Closed gedw99 closed 1 month ago

gedw99 commented 1 month ago

Hey,

Really liking this approach fro code gen...

I cant seem to get a docker build working on may Mac m2.

I followed the docs: https://github.com/jzero-io/jzero/blob/main/README-EN.md

export ORGANIZATION=gedw99

I am running off main version btw.

At the bottom is the error, but I include all the steps here just in case.

I am using the Makefile that is inside the example project btw. Not my Makefile.


# crreate the test project...
mkdir -p /Users/apple/workspace/go/src/junk/jzero/.data
mkdir -p /Users/apple/workspace/go/src/junk/jzero/.data/workspace
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace && jzero new test-proj
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace && touch go.work
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace && go work use test-proj

# gen
# generate server code ...
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen
Enter working dir /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj
Start to generate proto code. 
Using proto file desc/proto/v1/hello.proto
Done
Start to generate internal/server/server.go
Done
Start to generate api code.
Using api file desc/api/3954155950.api
Done
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && go mod tidy
go: finding module for package github.com/common-nighthawk/go-figure
go: finding module for package github.com/spf13/cobra
go: finding module for package github.com/zeromicro/go-zero/core/conf
go: finding module for package github.com/zeromicro/go-zero/rest/httpx
go: finding module for package github.com/jzero-io/jzero-contrib/gwx
go: finding module for package github.com/zeromicro/go-zero/gateway
go: finding module for package github.com/zeromicro/go-zero/core/proc
go: finding module for package github.com/zeromicro/go-zero/core/logx
go: finding module for package github.com/jzero-io/jzero-contrib/swaggerv2
go: finding module for package github.com/zeromicro/go-zero/zrpc
go: finding module for package github.com/zeromicro/go-zero/rest
go: finding module for package github.com/zeromicro/go-zero/core/service
go: finding module for package github.com/zeromicro/go-zero/core/logc
go: finding module for package github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options
go: found github.com/common-nighthawk/go-figure in github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be
go: found github.com/jzero-io/jzero-contrib/gwx in github.com/jzero-io/jzero-contrib v0.5.0
go: found github.com/spf13/cobra in github.com/spf13/cobra v1.8.1
go: found github.com/zeromicro/go-zero/core/conf in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/core/logx in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/core/proc in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/core/service in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/gateway in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/zrpc in github.com/zeromicro/go-zero v1.7.0
go: found github.com/jzero-io/jzero-contrib/swaggerv2 in github.com/jzero-io/jzero-contrib v0.5.0
go: found github.com/zeromicro/go-zero/rest in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/rest/httpx in github.com/zeromicro/go-zero v1.7.0
go: found github.com/zeromicro/go-zero/core/logc in github.com/zeromicro/go-zero v1.7.0
go: found github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options in github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0
# generate swagger json
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen swagger
# generate http sdk
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen sdk
# generate zrpcclient
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen zrpcclient
# gen docs
#cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && jzero gen doc
apple@apples-MacBook-Pro jzero % 

# run server to check it compiles, etc 
# Starting rpc server: http://localhost:8000
# Starting gateway server:  http://localhost:8001/swagger
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && go run main.go server
       __   ________   _______ .______        ______
      |  | |       /  |   ____||   _  \      /  __  \
      |  | `---/  /   |  |__   |  |_)  |    |  |  |  |
.--.  |  |    /  /    |   __|  |      /     |  |  |  |
|  `--'  |   /  /----.|  |____ |  |\  \----.|  `--'  |
 \______/   /________||_______|| _| `._____| \______/
2024-08-23T14:31:54.968+10:00    info   Starting rpc server at 0.0.0.0:8000...  caller=cmd/server.go:80
2024-08-23T14:31:54.968+10:00    info   Starting gateway server at 0.0.0.0:8001...      caller=cmd/server.go:81

# build binary in place
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && make build
make[1]: Entering directory '/Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj'
make[1]: Leaving directory '/Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj'
# FAILS: Something to do with §TARGETARCH i think. !
# build docker in place
cd /Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj && make docker
make[1]: Entering directory '/Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj'
#0 building with "galene" instance using docker-container driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 609B done
#1 WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 1)
#1 WARN: RedundantTargetPlatform: Setting platform to predefined $TARGETPLATFORM in FROM is redundant as this is the default behavior (line 18)
#1 DONE 0.0s

#2 [auth] jzero-io/jzero:pull token for ghcr.io
#2 DONE 0.0s

#3 [internal] load metadata for ghcr.io/jzero-io/jzero:latest
#3 ...

#4 [internal] load metadata for docker.io/library/alpine:latest
#4 DONE 1.0s

#3 [internal] load metadata for ghcr.io/jzero-io/jzero:latest
#3 DONE 1.3s

#5 [internal] load .dockerignore
#5 transferring context: 2B done
#5 DONE 0.0s

#6 [builder 1/4] FROM ghcr.io/jzero-io/jzero:latest@sha256:f390d5f7b0032dde06a84dc4056d53d4df8c4d36e9dcc1c560ee611950811963
#6 resolve ghcr.io/jzero-io/jzero:latest@sha256:f390d5f7b0032dde06a84dc4056d53d4df8c4d36e9dcc1c560ee611950811963 0.0s done
#6 DONE 0.0s

#7 [stage-1 1/3] FROM docker.io/library/alpine:latest@sha256:0a4eaa0eecf5f8c050e5bba433f58c052be7587ee8af3e8b3910ef9ab5fbe9f5
#7 resolve docker.io/library/alpine:latest@sha256:0a4eaa0eecf5f8c050e5bba433f58c052be7587ee8af3e8b3910ef9ab5fbe9f5 0.0s done
#7 DONE 0.0s

#8 [stage-1 2/3] WORKDIR /dist
#8 CACHED

#9 [internal] load build context
#9 transferring context: 77.81MB 0.5s done
#9 DONE 0.5s

#10 [builder 2/4] WORKDIR /usr/local/go/src/app
#10 CACHED

#11 [builder 3/4] COPY ./ ./
#11 DONE 0.2s

#12 [builder 4/4] RUN --mount=type=cache,target=/go/pkg CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -ldflags="$LDFLAGS" -o /dist/app main.go     && jzero gen swagger     && cp -r etc /dist/etc     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc
#12 0.054 go: downloading github.com/fullstorydev/grpcurl v1.9.1
#12 0.054 go: downloading github.com/jhump/protoreflect v1.16.0
#12 0.070 go: downloading google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142
#12 0.086 go: downloading go.etcd.io/etcd/client/v3 v3.5.15
#12 0.157 go: downloading k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
#12 4.149 /go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway/v2@v2.22.0/runtime/handler.go:13:2: google.golang.org/genproto/googleapis/api@v0.0.0-20240814211410-ddb44dafa142: read "https://goproxy.cn/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20240814211410-ddb44dafa142.zip": stream error: stream ID 9; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/go-zero@v1.7.0/gateway/server.go:9:2: github.com/fullstorydev/grpcurl@v1.9.1: read "https://goproxy.cn/github.com/fullstorydev/grpcurl/@v/v1.9.1.zip": stream error: stream ID 7; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/go-zero@v1.7.0/gateway/server.go:11:2: github.com/jhump/protoreflect@v1.16.0: read "https://goproxy.cn/github.com/jhump/protoreflect/@v/v1.16.0.zip": stream error: stream ID 5; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/go-zero@v1.7.0/gateway/internal/descriptorsource.go:9:2: github.com/jhump/protoreflect@v1.16.0: read "https://goproxy.cn/github.com/jhump/protoreflect/@v/v1.16.0.zip": stream error: stream ID 5; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/go-zero@v1.7.0/gateway/internal/descriptorsource.go:10:2: google.golang.org/genproto/googleapis/api@v0.0.0-20240814211410-ddb44dafa142: read "https://goproxy.cn/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20240814211410-ddb44dafa142.zip": stream error: stream ID 9; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/github.com/zeromicro/go-zero@v1.7.0/core/discov/internal/etcdclient.go:8:2: go.etcd.io/etcd/client/v3@v3.5.15: read "https://goproxy.cn/go.etcd.io/etcd/client/v3/@v/v3.5.15.zip": stream error: stream ID 1; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/apimachinery@v0.29.4/pkg/util/validation/validation.go:28:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/apimachinery@v0.29.4/pkg/labels/selector.go:30:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/apimachinery@v0.29.4/pkg/util/cache/expiring.go:24:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/util/flowcontrol/backoff.go:25:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/util/flowcontrol/backoff.go:26:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/tools/cache/shared_informer.go:30:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/tools/cache/reflector.go:45:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/tools/cache/delta_fifo.go:28:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
#12 ERROR: process "/bin/sh -c CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build -a -ldflags=\"$LDFLAGS\" -o /dist/app main.go     && jzero gen swagger     && cp -r etc /dist/etc     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc" did not complete successfully: exit code: 1
------
 > [builder 4/4] RUN --mount=type=cache,target=/go/pkg CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -ldflags="$LDFLAGS" -o /dist/app main.go     && jzero gen swagger     && cp -r etc /dist/etc     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc:
4.149 /go/pkg/mod/github.com/zeromicro/go-zero@v1.7.0/gateway/internal/descriptorsource.go:10:2: google.golang.org/genproto/googleapis/api@v0.0.0-20240814211410-ddb44dafa142: read "https://goproxy.cn/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20240814211410-ddb44dafa142.zip": stream error: stream ID 9; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/github.com/zeromicro/go-zero@v1.7.0/core/discov/internal/etcdclient.go:8:2: go.etcd.io/etcd/client/v3@v3.5.15: read "https://goproxy.cn/go.etcd.io/etcd/client/v3/@v/v3.5.15.zip": stream error: stream ID 1; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/apimachinery@v0.29.4/pkg/util/validation/validation.go:28:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/apimachinery@v0.29.4/pkg/labels/selector.go:30:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/apimachinery@v0.29.4/pkg/util/cache/expiring.go:24:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/util/flowcontrol/backoff.go:25:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/util/flowcontrol/backoff.go:26:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/tools/cache/shared_informer.go:30:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/tools/cache/reflector.go:45:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
4.149 /go/pkg/mod/k8s.io/client-go@v0.29.3/tools/cache/delta_fifo.go:28:2: k8s.io/utils@v0.0.0-20240711033017-18e509b52bc8: read "https://goproxy.cn/k8s.io/utils/@v/v0.0.0-20240711033017-18e509b52bc8.zip": stream error: stream ID 3; INTERNAL_ERROR; received from peer
------

 3 warnings found (use docker --debug to expand):
 - FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 1)
 - RedundantTargetPlatform: Setting platform to predefined $TARGETPLATFORM in FROM is redundant as this is the default behavior (line 18)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 6)
Dockerfile:12
--------------------
  11 |     
  12 | >>> RUN --mount=type=cache,target=/go/pkg CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build -a -ldflags="$LDFLAGS" -o /dist/app main.go \
  13 | >>>     && jzero gen swagger \
  14 | >>>     && cp -r etc /dist/etc \
  15 | >>>     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc
  16 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build -a -ldflags=\"$LDFLAGS\" -o /dist/app main.go     && jzero gen swagger     && cp -r etc /dist/etc     && mkdir -p /dist/desc && cp -r desc/swagger /dist/desc" did not complete successfully: exit code: 1
make[1]: *** [Makefile:23: docker] Error 1
make[1]: Leaving directory '/Users/apple/workspace/go/src/junk/jzero/.data/workspace/test-proj'
make: *** [Makefile:130: run-6-build] Error 2
apple@apples-MacBook-Pro jzero % 

``
gedw99 commented 1 month ago

I added a print target to the makefile just to check that the values are ok.

ORGANIZATION:   organization
APP:            test-proj
VERSION:        v0.23.8-7-gc4fe4633
COMMIT:         c4fe4633
DATE:           2024-08-23 14:44:42
ARCH:           arm64
jaronnie commented 1 month ago

Makefile

.PHONY: docker
docker:
    @docker buildx build --platform linux/$(ARCH) --progress=plain -t $(ORGANIZATION)/$(APP):$(VERSION) . --load

.PHONY: push
push:
    @docker buildx create --use --name=mybuilder --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master 2> /dev/null || true
    @docker buildx build --platform linux/amd64,linux/arm64 --progress=plain -t $(ORGANIZATION)/$(APP):$(VERSION) . --push

You may need to add the following command, I missed it.

docker buildx create --use --name=mybuilder --driver docker-container --driver-opt
jaronnie commented 1 month ago

Maybe it's also a go proxy problem. Dockerfile uses https://goproxy.cn as proxy, you can delete this env

gedw99 commented 1 month ago

thanks @jaronnie

yes thats worked...

jaronnie commented 1 month ago

How to solve, could you please tell me

gedw99 commented 1 month ago

In the Dockerfile, just comment it out:

#ENV GOPROXY https://goproxy.cn,direct