如何在容器中两次运行可执行文件

3天

如何在Docker容器中执行两次可执行文件?

例如,我需要运行我的应用程序两次,第一次是初始化一些东西,第二次是侦听环境变量中定义的给定端口。

来自shell的命令如下所示:

[j3d@gonzo test]$ kontrol -initial
[j3d@gongo test]$ kontrol
started... listening on port 6000...

以下是我的Dockerfile:

FROM golang:1.8.3 as builder
RUN go get -u github.com/golang/dep/cmd/dep
RUN go get -d github.com/koding/kite
WORKDIR ${GOPATH}/src/github.com/koding/kite
RUN ${GOPATH}/bin/dep ensure
RUN go install ./kontrol/kontrol
RUN mv ${GOPATH}/bin/kontrol /tmp

FROM busybox
ENV APP_HOME /opt/robotrader
RUN mkdir -p ${APP_HOME}
WORKDIR ${APP_HOME}
COPY --from=builder /tmp/kontrol .
ENTRYPOINT ["./kontrol", "-initial"]
CMD ["./kontrol"]

容器构建成功...但是当我启动它时,我总是收到以下错误消息:

kontrol    | standard_init_linux.go:190: exec user process caused "no such file or directory"

任何帮助将非常感激。

编辑

感谢zero298帮助我解决了这个问题,下面是一个可行的方法Dockerfile

FROM golang:1.8.3 as builder
RUN go get -u github.com/golang/dep/cmd/dep
RUN go get -d github.com/koding/kite
WORKDIR ${GOPATH}/src/github.com/koding/kite
RUN ${GOPATH}/bin/dep ensure
RUN CGO_ENABLED=0 go install ./kontrol/kontrol
RUN mv ${GOPATH}/bin/kontrol /tmp

FROM busybox
ENV APP_HOME /opt/robotrader
RUN mkdir -p ${APP_HOME}
WORKDIR ${APP_HOME}
COPY --from=builder /tmp/kontrol .
ENTRYPOINT ["./kontrol", "-initial"]
CMD ["./kontrol"]

go应用程序应使用以下版本构建CGO_ENABLED=0-有关更多信息,请参见此帖子

零298

我认为您遇到的问题与您认为的不同。运行您的Dockerfile,然后执行:

docker build -t j3d .
docker run -it --rm --name j3d-test --entrypoint sh j3d

允许我从容器中运行自己的命令。

使用ls列出了PWD内容:

-rwxr-xr-x    1 root     root       16.8M Jun 21 19:20 kontrol

一切似乎正常。但是,尝试自己运行将产生以下错误:

sh: ./kontrol: not found

对我来说,这可能类似于:Linux可执行文件失败,显示“找不到文件”,即使该文件位于PATH中也是如此

实际上,如果您改为:

  1. 将编译后的kontrol可执行文件复制builder映像
  2. 运行ubuntu容器,以复制的kontrol可执行文件挂载目录docker run -it --rm -v $PWD:/mnt/go ubuntu sh
  3. 尝试跑步 kontrol

您将收到“正确”错误,提示您尚未正确设置密钥:

2018/06/21 19:56:57 cannot read public key file: open : no such file or directory

您的前进之路可能是弄清楚为什么您不能交叉编译

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

两次单击即可将JavaFX项目导出为可执行文件

如何在C中的其他目录中运行可执行文件?

如何在Docker中包装可执行文件?

如何在Linux Shell脚本中运行Windows可执行文件?

如何在Qt Installer Framework中运行可执行文件?

您如何在Bazel规则中运行其他规则的可执行文件?

如何在 Windows 终端中运行可执行文件?

如何在shell脚本中运行可执行文件?

如何在Xcode中添加可以由Swift Package Manager运行的可执行文件?

如何在Swift可执行文件(如“ vi”)中运行和打印zsh命令

如何在与Windows 7不兼容的cmd中运行可执行文件?

如何在添加到PATH的目录中运行可执行文件?

如何在没有可执行文件弹出控制台的情况下在Python中运行可执行文件?

运行时可以替换POD中容器中的可执行文件吗?

从Docker容器中的主机运行可执行文件

x64 C++ 可执行文件未在 nanoserver docker 容器中运行

在根目录中运行make命令时,如何在其他目录中运行可执行文件?

如何在vscode中构建和运行以及删除可执行文件和虚拟文件

如何设置cron作业以每小时运行一次可执行文件?

如何在32位或64位配置中以编程方式运行ANY CPU .NET可执行文件?

如何使可执行文件运行不同的进程?

Windows如何确定要运行的可执行文件

如何运行Nuitka编译的Python可执行文件

如何直接从Nautilus运行可执行文件?

在dockerfile中运行可执行文件

在Azure Function中运行.exe可执行文件

在来宾可执行文件中运行节点模块

在Jmeter中运行C可执行文件(测试)

在C#dockerfile中运行可执行文件