我正试图从一个复制和提取
.zip
包含可执行文件的存档(
myapp
,以及其他文件)。有一个
docker-entrypoint.sh
运行可执行文件的脚本。这个
docker build
成功完成,但是当我运行映像时,入口点脚本没有说找不到可执行文件。
$ docker build .
Successfully built 890ec2f09ad4
$ docker run 890ec2f09ad4
./docker-entrypoint.sh: line 3: ./myapp: not found
我已经验证了可执行文件是否已从存档中提取,并且通过执行
ls -l
在里面
docker入口点.sh
脚本。
-rwxrwxr-x 1 root root 45 Jan 20 22:16 docker-entrypoint.sh
-rwxr-xr-x 1 root root 71473 Jan 20 22:16 myapp
-rw-r--r-- 1 root root 177 Jan 20 22:16 myapp.ini
如果我跑同样的
docker入口点.sh
在Docker映像之外的脚本,在可执行文件旁边,一切工作正常。
我也尝试过:
-
直接从dockerfile运行可执行文件(导致类似的“找不到文件”错误)
-
使用
ubuntu:latest
基本图像(相同错误)
-
使用dos2unix确保行尾正确(无更改)
我还可以试试什么?我是Docker的新手,这看起来应该很容易完成,所以我不确定我哪里出错了…
Dockerfile:
FROM alpine:latest
RUN mkdir -p /opt/app/
WORKDIR /opt/app/
COPY target/products/myapp.zip .
RUN unzip myapp.zip && rm myapp.zip
COPY docker-entrypoint.sh .
RUN chmod +x docker-entrypoint.sh
ENTRYPOINT ["./docker-entrypoint.sh"]
docker-入口点.sh:
#!/bin/sh
./myapp