Docker exec用户进程中的Golang应用程序导致"没有这样的文件或目录"

时间:2018-03-03 02:14:55

标签: ubuntu docker go

我正在尝试创建在Go中开发的应用程序的docker镜像。我有一个名为myapp的二进制文件,如果我执行它然后它正常工作,我执行它:

@-webkit-keyframes kanan {
    0% {-webkit-transform:translateX(20px);
    }

    50%{-webkit-transform:translateX(-20px);
    }

    100%{-webkit-transform:translateX(20px);
    z-index:200;
    }
}
@-webkit-keyframes kiri {
     0% {-webkit-transform:translateX(-20px);
    z-index:200;
    }
    50%{-webkit-transform:translateX(20px);
    }
    100%{-webkit-transform:translateX(-20px);
    }
}

然后,取出那个bin并将其单独放在一个名为./myapp 的目录中,然后放入这个dockerfile:

mydirectory

然后输入以下命令创建docker镜像:

# iron/go is the alpine image with only ca-certificates added
FROM iron/go

WORKDIR /

# Now just add the binary
ADD myapp /

ENTRYPOINT ["./myapp"]

然后,当我运行图像时,我收到此消息:

docker build -t myDockerHubUser/myapp .

这是什么意思?我找到了一些与相同消息相关的帖子,但问题是我的bnary正确执行没有任何问题

3 个答案:

答案 0 :(得分:5)

你最有可能:

  • 将二进制文件用于错误的平台
  • 二进制文件没有静态链接(没有所有必需的库)

您可以使用CGO_ENABLED=0静态构建二进制文件。

答案 1 :(得分:0)

在container / myfile中没有执行权限。你必须在dockerfile中做一个chmod + x / myfile。只需在ENTRYPOINT行之前添加以下语句。

  

运行chmod + x / myfile

答案 2 :(得分:0)

你必须在你的机器中构建docker内的二进制文件。

FROM golang

ADD ./ /go/src/app

WORKDIR /go/src/app

RUN go get ./

RUN go build

CMD app