Vamos falar de Go (linguagem) Código Conduta: https://golang.org/conduct Grupos Regionais Go - @go_bh - @golangcwb
lista de sistemas e plataformas suportadas. Cross compile do Go é lindo 😁
https://pkg.go.dev/internal/platform#pkg-variables
https://go.dev/wiki/WindowsCrossCompiling
https://go.dev/wiki/GccgoCrossCompilation
https://rakyll.org/cross-compilation/
https://go.dev/wiki/#platform-specific-information
https://ruanbekker.medium.com/how-to-create-arm-based-container-images-with-buildx-fe917d186824
Читать полностью…Hmm tem que fazer uns experimentos, eu não vou conseguir te ajudar muito nesse momento, mas uma pergunta antes: Se você roda do go build localmente tudo compila sem problemas né?
Читать полностью…tentei com buildx setando a plarform para o amd4 mas
docker buildx build --platform linux/amd64 -t teste-go-2 . --no-cache
[+] Building 29.0s (11/12) docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 307B 0.0s
=> [internal] load metadata for docker.io/library/golang:1.24.5 2.0s
=> [auth] library/golang:pull token for registry-1.docker.io 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [builder 1/5] FROM docker.io/library/golang:1.24.5@sha256:fdcd2e5a34587bd5426c90e1531fd5ba448c89bb738df0f33860dfc69439a1f5 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 140B 0.0s
=> CACHED [stage-1 1/2] WORKDIR /app 0.0s
=> CACHED [builder 2/5] WORKDIR /app 0.0s
=> [builder 3/5] RUN apt-get update -qq && apt-get install -y build-essential pkg-config 26.3s
=> [builder 4/5] COPY . . 0.0s
=> ERROR [builder 5/5] RUN go build main.go 0.6s
------
> [builder 5/5] RUN go build main.go:
0.533 go: downloading github.com/gin-gonic/gin v1.10.1
0.585 SIGSEGV: segmentation violation
0.585 PC=0x43a8ae m=1 sigcode=1 addr=0xffffffff68562e10
0.585
0.585 goroutine 0 gp=0xc000002700 m=1 mp=0xc00004e008 [idle]:
0.586 runtime.netpoll(0x398f1692a68f?)
0.586 runtime/netpoll_epoll.go:169 +0x24e fp=0xc00002df38 sp=0xc00002d8b0 pc=0x43a8ae
0.586 runtime.sysmon()
0.586 runtime/proc.go:6194 +0x2d7 fp=0xc00002dfa0 sp=0xc00002df38 pc=0x44dfd7
0.586 runtime.mstart1()
0.586 runtime/proc.go:1865 +0x93 fp=0xc00002dfc8 sp=0xc00002dfa0 pc=0x4447b3
0.586 runtime.mstart0()
0.586 runtime/proc.go:1818 +0x75 fp=0xc00002dff8 sp=0xc00002dfc8 pc=0x4446f5
0.586 runtime.mstart()
0.586 runtime/asm_amd64.s:395 +0x5 fp=0xc00002e000 sp=0xc00002dff8 pc=0x47b725
0.586
0.586 goroutine 1 gp=0xc000002380 m=nil [chan receive]:
0.586 runtime.gopark(0xc00015e180?, 0x0?, 0x7?, 0x0?, 0xc00014e150?)
0.586 runtime/proc.go:435 +0xce fp=0xc000090dc0 sp=0xc000090da0 pc=0x475a8e
0.586 runtime.chanrecv(0xc00014e150, 0x0, 0x1)
0.586 runtime/chan.go:664 +0x445 fp=0xc000090e38 sp=0xc000090dc0 pc=0x4118a5
opa coloquei o --platform linux/amd64 pq o destino final e rodar numa maquina x86
Читать полностью…Agora se o objetivo é publicar esse container em outro lugar, eu acho que você vai precisar do docker buildx
Читать полностью…O erro é bem estranho, lendo tudo que você enviou a coisa mais estranha parece ser o comando docker build:
docker build --platform linux/amd64 -t teste-go-2 . --no-cache
linux/arm64
ao invés de amd64
Читать полностью…
Isso deixa o código pouco amarrado, por exemplo se eu precisar de uma operação que atua em usuários e produtos eu posso encaixar a mesma chamada em duas interfaces, em outros casos posso ter um serviço onde eu quero ter acesso ao repo inteiro o que é ok tbm, aí faço uma interface composta, e.g.:
type RepoProvider interface{
UsersRepo
ProductsRepo
OutroRepo
}
Eu já faço o extremo oposto: Faço um pacote chamado repo, separo um arquivo pra cada entidade, mas todos no mesmo namespace
Читать полностью…bom dia, galera que tem mais experiencia que eu, isso ta feio? eu nao entendo sobre clean code ainda.
Читать полностью…mas vc quer gerar um binario para amd64? estando no mac com isso já funciona. nem precisa do docker`env GOOS=linux GOARCH=amd64 go build -o start main.go`
Você pode também experimentar fazer o mesmo processo com um main.go vazio e ver se a culpa é algo que o Gin está fazendo
Читать полностью…Entendi, então acredito que o docker buildx que é o novo mecanismo de build do docker ia ser o mais aconselhável pra isso
Читать полностью…Geralmente eu não faço um docker build && docker push diretamente da minha máquina, faço isso num Github Actions ou outro CI, aí o build sempre é feito numa mesma máquina
Читать полностью…Voce pode também remover o --platform linux/amd64
o default é o sistema atual
opa galera do go tudo bem.
bom preciso de uma ajuda pra entender o que esta acontencendo
minha maquina é um mac os com M1
ao tentar buildar um app simples, pois estou iniciando meus estudos, tenho um erro. E não sei o que pode esta acontecendo
segue o gist com o dockerfile o main.go e o erro
https://gist.github.com/robsonribeiros/517281096dc03e19aa0799bd46c40c0e
se poderem me ajudar agradeço demais
Aí eu limito o acesso ao repositório através de interfaces, tenho uma interface chamada UsersRepo que só tem os métodos de usuário por exemplo
Читать полностью…clt no mesmo ramo / concorrencia ai da merda
mas se o contrato clt acabar, se nao me engano ta livre
tavam querendo adicionar uma parada de exclusivodade pra clt a um tempo (🤮) mas n sei dizer que fim levou
nao sei se ainda existe a maracutaia de que a pj nao pode prestar, mas a pessoa fisica que é voce pode
ja tinham mandado essa treta antes a mo tempao
mas n sei que fim tomou