首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go 1.14模块构建命令忽略码头供应商Dir

Go 1.14模块构建命令忽略码头供应商Dir
EN

Stack Overflow用户
提问于 2020-05-22 14:23:47
回答 1查看 1.8K关注 0票数 0

如何让Docker中的go build命令在每次构建中使用模块缓存或供应商目录,除非依赖项已经改变?

我尝试过这两种方法,但结果不一致:

How can I persist go 1.11 modules in a Docker container? ^这不起作用,我相信是因为我使用的是码头“构建者”模式。

https://medium.com/@monirz/golang-dependency-solution-with-go-module-and-docker-8967da6dd9f6 ^这个应该能用,但只是因为某种原因.

我正在处理一个服务器,对于我对go源代码所做的每一个小小的更改,我需要重新编译都是有意义的,但是而不是是有意义的,这个步骤也应该再次重新下载所有的依赖项,每次都是这样。

我正在将此服务器构建为一个go module,下面是我当前的Dockerfile:

代码语言:javascript
复制
FROM golang:1.14 AS builder

# Add the source
WORKDIR /app
COPY . .

# Statically compile our app for use in a distroless container
RUN CGO_ENABLED=0 go build -mod vendor -ldflags="-w -s" -v -o app .

# A distroless container image with some basics like SSL certificates
# https://github.com/GoogleContainerTools/distroless
FROM gcr.io/distroless/static

# Copy over binary and words dir
COPY --from=builder /app/app /app

ENTRYPOINT ["/app"]

我还尝试将-mod=vendor标志添加到go命令中,它不会改变行为.如果1.14检测到模块路径中的供应商dir (就在那里),那么它应该已经自动使用该标志了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 16:02:44

供应商文件正在使用,只是看起来不像,因为虽然它没有重新下载所有模块,但在每次构建时都是重新构建它们。问题似乎是试图使用构建器模式,我已经修改了我的开发撰写文件,以处理撰写yaml中的所有内容,并将为生产保留构建器模式Dockerfile (无论如何,这只是真正重要的)。

现在,使用下面的开发构建要快得多,并且似乎不需要在每个构建上重新编译每个模块:

docker-compose.yaml

代码语言:javascript
复制
version: "3.7"

services:
  nginx:
    container_name: nginx
    image: nginx:alpine
    restart: unless-stopped
    ports:
      - 8000:80
    depends_on:
      - api
    volumes:
      - ./container_spec/nginx.conf:/etc/nginx/nginx.conf
      - ./container_spec/cors_support:/etc/nginx/cors_support

  api:
    image: golang:1.14
    container_name: api
    restart: always
    working_dir: /app
    volumes:
      - .:/app
      - cache:/go
    expose:
      - 8080
    command: go run main.go

volumes:
  cache:
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61957172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档