我想尝试GitHub操作:编译一个cargo项目,构建一个docker镜像,并将其发布为GitHub包(该项目可以在GitHub here上找到)。它工作了,Rust项目被编译,docker镜像被构建,然后镜像被发布。但是当我尝试运行镜像时,我得到了以下响应:
mobergmann@ziegel ~> docker pull ghcr.io/mobergmann/actions-docker-test:latest
Trying to pull ghcr.io/mobergmann/actions-docker-test:latest...
... # rest is left out, because of redundancy
mobergmann@ziegel ~> docker run ghcr.io/mobergmann/actions-docker-test:latest
/bin/sh: 1: ./gh-action-test: Permission denied
字符串
运行编译后的二进制文件时权限被拒绝。我无法理解这一点,特别是因为在Dockerfile中我这样做了:
RUN chmod 555 gh-action-test
RUN ls -l .
RUN ls -l gh-action-test
型
我的操作日志中的输出是:
#7 [2/7] COPY ./target/release/gh-action-test /src/gh-action-test
#7 DONE 0.0s
#8 [3/7] WORKDIR /src
#8 DONE 0.0s
#9 [4/7] RUN pwd
#9 0.224 /src
#9 DONE 0.2s
#10 [5/7] RUN chmod 555 gh-action-test
#10 DONE 0.3s
#11 [6/7] RUN ls -l .
#11 0.322 total 4
#11 0.322 dr-xr-xr-x 1 root root 4096 Oct 30 22:19 gh-action-test
#11 DONE 0.3s
#12 [7/7] RUN ls -l gh-action-test
#12 0.209 total 4548
#12 0.209 -rw-r--r-- 1 root root 4654808 Oct 30 22:19 gh-action-test
#12 DONE 0.2s
型
为什么ls -l .
和ls -l <file>
的文件权限不同?
当我尝试在本地编译和构建镜像时,我在运行镜像时没有得到错误。我怀疑错误是由于伪影造成的,但我不确定。
你们谁能帮我弄清楚如何使表单的动作生成的图像可执行?
1条答案
按热度按时间4dbbbstv1#
您有一个
gh-action-test
目录,其中有一个gh-action-test
文件,这就是dr-xr-xr-x
中的d
所代表的。ls -l .
命令显示当前目录中的gh-action-test
目录。ls -l gh-action-test
命令显示gh-action-test/gh-action-test
文件。如果执行
ls -ld gh-action-test
,您应该看到与ls -l .
中相同的权限