【问题标题】:Docker with Go cli project带有 Go cli 项目的 Docker
【发布时间】:2018-12-04 19:28:15
【问题描述】:

我使用以下 docker 文件,它按预期工作 该项目是cli,当我运行命令docker run -it cli 我从 cli 收到错误(这没关系,因为入口点只是在运行 fzr ENTRYPOINT ["./fzr"])

通常我会在我的机器上运行,例如 fzr -helpfzr version

我希望当我使用像docker run -it cli 这样的命令时,我将能够在容器内运行命令

喜欢fzr -helpfzr version,我该怎么做?

FROM golang:1.10.5 AS build-env


ADD https://github.com/golang/dep/releases/download/v0.4.2/dep-linux-amd64 /usr/bin/dep
RUN chmod +x /usr/bin/dep

RUN mkdir -p $GOPATH/src/github.com/fzr
WORKDIR  $GOPATH/src/github.com/fzr


COPY Gopkg.toml Gopkg.lock ./

# install project dep
RUN dep ensure 

COPY . ./

RUN  go build  -o /fzr

FROM scratch
COPY --from=build-env /fzr ./
ENTRYPOINT ["./fzr"]

【问题讨论】:

  • docker exec -it --rm cli fzr version
  • 到底出了什么问题?实际的docker run 命令及其实际输出是什么?

标签: docker go dockerfile


【解决方案1】:

TL;DR; docker run -it cli 版本

如果您将 ENTRYPOINT 设置为二进制文件,那么您在图像名称之后传递的所有内容都将用作该二进制文件的 arg。如果由于某种原因您需要覆盖入口点,请使用 --entrypoint 标志到 docker run。

【讨论】:

  • 因为它是一个FROM scratch 图像,所以没有其他东西可以设置入口点。例如,您无法在容器中获取 shell,因为没有 /bin/sh
猜你喜欢
  • 2018-08-15
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 2019-10-09
  • 2017-07-26
  • 1970-01-01
相关资源
最近更新 更多