go - 如何卡住具有依赖关系的微版本?

标签 go go-micro

我想用固定版本的 micro 构建一个 docker 镜像并去依赖。我打算用 dep 来做:

git checkout git@github.com:micro/micro.git
dep ensure
git add Gopkg.toml
git add Gopkg.lock

# Build micro
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-w' -i -o micro ./main.go 

# Build docker image
...

所以,我的问题是它是构建一致的 micro docker 镜像的最佳解决方案吗?

最佳答案

Dockerfile 的示例可以是:

FROM golang:1.9-alpine3.6 as builder

# Install package manager
RUN apk add --no-cache --virtual .go-dependencies git curl \
  && curl https://glide.sh/get | sh

# Copy files from context
WORKDIR /go/src/github.com/foo/bar
COPY . .

# Install project dependencies, test and build
RUN glide install \
  && go test ./... \
  && CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-w' -i -o ./entry ./main.go ./plugins.go

# Build final image with binary
FROM alpine:3.6
RUN apk add --update ca-certificates && \
    rm -rf /var/cache/apk/* /tmp/*
WORKDIR /
COPY --from=builder /go/src/github.com/foo/bar/entry .
ENTRYPOINT [ "/entry" ]

glide.yaml 看起来像这样:

package: .
import:
- package: github.com/micro/go-micro
  version: ^0.3.0
  subpackages:
  - client
  - server
- package: github.com/micro/go-plugins
  version: ^0.6.1
  subpackages:
  - wrapper/trace/opentracing
  - broker/nats
  - transport/nats
- package: github.com/opentracing/opentracing-go
  version: ^1
- package: github.com/openzipkin/zipkin-go-opentracing
  version: ^0.3
testImport:
- package: github.com/golang/mock
  subpackages:
  - gomock
- package: github.com/smartystreets/goconvey
  subpackages:
  - convey

关于go - 如何卡住具有依赖关系的微版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48520523/

相关文章:

date - 在 Go/Golang 中获取当前月份的第一天和最后一天?

go - gRPC 可以集成到 flutter-web 中吗?

go - micro_out : protoc-gen-micro: Plugin failed

go - Go-Micro Rabbit MQ插件-优先发布消息

go - 接口(interface)及其实现的包/目录结构

Azure blob 首次写入

xml - 如何使用golang编码/xml读取具有不同根的xml内容

go - go get -u创建失败的go.mod

go-micro 包装器即服务

go-micro kubernetes greeter 示例 - 无法访问 greeter api 服务