我有一个用 Golang 编写的可执行文件,它在从 Linux 提示符启动时启动并运行良好。如您所见,可执行文件在启动时需要一个 XML 文件。但是当在 Docker 环境中启动时,我收到错误消息:
standard_init_linux.go:190: exec user process caused "no such file or directory"
让我告诉你我尝试了什么。首先,这是我的 Dockerfile:
FROM alpine:latest
MAINTAINER Bert Verhees "xxxxx"
ADD archibold_ucum_service /archibold_ucum_service
ADD data/ucum-essence.xml /data/ucum-essence.xml
ENTRYPOINT ["/archibold_ucum_service", "-ucumfile=/data/ucum-essence.xml"]
我以这种方式构建它:
docker build -t=ucum_micro_service .
然后我以这种方式启动它
docker run --name=ucum_micro_service -i -t ucum_micro_service /bin/sh
当我这样做时,我会收到如上所示的错误消息。然后我尝试注释掉 ENTRYPOINT 行,然后它构建 OKAY 并启动 linux 提示符,因此我可以查询里面的内容。可执行文件在其中,数据文件也在其中。并且可执行文件也具有正确的属性(它可以在 docker-container 中执行)
然后我尝试在已启动的容器内从 linux-prompt 启动可执行文件,然后我再次收到一条消息,指出找不到文件:
/ # ./archibold_ucum_service
/bin/sh: ./archibold_ucum_service: not found
为了完整起见,这里部分是容器中的目录结构:
/ # ls -l
total 17484
-rwxrwxr-x 1 root root 17845706 Aug 3 13:21 archibold_ucum_service
drwxr-xr-x 2 root root 4096 Jul 5 14:47 bin
drwxr-xr-x 2 root root 4096 Aug 3 14:29 data
drwxr-xr-x 5 root root 360 Aug 4 20:27 dev
drwxr-xr-x 15 root root 4096 Aug 4 20:27 etc
drwxr-xr-x 2 root root 4096 Jul 5 14:47 home
drwxr-xr-x 5 root root ........
.......
那么,可能是什么问题。我正在尝试解决这个问题超过一天。谢谢你的支持。