dockerfile 如下:
FROM alpine
WORKDIR /data
COPY test ./test
RUN chmod +x ./test
ENTRYPOINT ["./test"]
构建镜像后,启动镜像报错 test 是二进制可执行文件
exec ./test: no such file or directory
1
prodan 2022-12-01 18:02:57 +08:00 1
alpine 的 libc 跟其他 Linux 发行版不一样,你的二进制文件要在 alpine 环境下编译。
建议使用 Dockerfile 多阶段构建。 |
2
shenqi 2022-12-01 18:08:55 +08:00
COPY test /data/test
RUN chmod +x /data/test ENTRYPOINT [". /data/test"] 这样试下? |
3
shenqi 2022-12-01 18:09:13 +08:00
ENTRYPOINT [". /data/test"] 有空格,不要漏
|
5
shiny 2022-12-01 18:14:03 +08:00
我也遇到权限有,文件确定存在,报同样的错误。当时原因是编译给 ubuntu 的,但拷到了 alpine 里执行。
|
6
rimutuyuan 2022-12-01 18:39:36 +08:00
我的一个 go 程序示例,不知道能否帮到你
FROM golang:alpine WORKDIR /app COPY . /app RUN go build -o main . CMD ["/app/main"] |
7
churchill 2022-12-01 19:01:56 +08:00
|
8
swulling 2022-12-01 19:06:56 +08:00 via iPhone 2
FROM ubuntu:22.04
|
9
Co1a 2022-12-01 19:07:14 +08:00
加一行
|
10
Co1a 2022-12-01 19:07:18 +08:00 1
RUN apk add --no-cache libc6-compat
|
11
swulling 2022-12-01 19:07:44 +08:00 via iPhone 1
坚决抵制 alpine 。
不喜欢 ubuntu 可以用 debian slim |
12
cdlnls 2022-12-01 19:43:07 +08:00
build 的时候加 CGO_ENABLED=1 ,
CGO_ENABLED=1 go build . |
13
isyu 2022-12-01 21:55:16 +08:00 via iPhone
你的 test 文件在 Windows 上编辑的?先用 dos2unix 转换一下换行符。
|
14
francis59 2022-12-01 22:40:11 +08:00
你的 shell 里面用的 Shebang(第一行)是 /bin/bash 吧,alpine 自带的只有 /bin/sh ,
改一下 shell 或者改成下面这样就可以了 ENTRYPOINT ["/bin/sh", "./test"] |
15
hoopan OP 感谢,可以了。用 ubuntu 或 debian 可以正常执行。
|