Shell 启动容器进程导致“exec:\”/tmp/run.sh\”:权限被拒绝:未知

Shell 启动容器进程导致“exec:\”/tmp/run.sh\”:权限被拒绝:未知,shell,docker,unix,docker-compose,dockerfile,Shell,Docker,Unix,Docker Compose,Dockerfile,我有一份文件 FROM composer:1.8.5 as build_stage COPY . /src WORKDIR /src RUN composer install FROM alpine:3.8 RUN apk --no-cache add \ php7 \ php7-mbstring \ php7-session \ php7-openssl \ php7-tokenizer \ php7-json \ php7-pdo \ php7-pdo_pgsql \ php7-pgs

我有一份文件

FROM composer:1.8.5 as build_stage

COPY . /src
WORKDIR /src
RUN composer install


FROM alpine:3.8
RUN apk --no-cache add \
php7 \
php7-mbstring \
php7-session \
php7-openssl \
php7-tokenizer \
php7-json \
php7-pdo \
php7-pdo_pgsql \
php7-pgsql
COPY --from=build_stage /src  /src
RUN ls -al
RUN set -x \
addgroup -g 82 -S www-data \
adduser -u 82 -D -S -G www-data www-data
WORKDIR /src
RUN ls -al
RUN chmod -R 777 storage
RUN sudo chmod +x run.sh
copy ./run.sh /tmp
ENTRYPOINT ["/tmp/run.sh"]
run.sh

#!/bin/sh

cd /app
php artisan migrate:fresh --seed
php artisan serve --host=0.0.0.0
当我跑步的时候,我一直在跑步


如何进一步进行调试?

问题在于此模块:

RUN sudo chmod +x run.sh
copy ./run.sh /tmp
ENTRYPOINT ["/tmp/run.sh"]
使run.sh可执行,然后用不可执行的版本覆盖它。切换两个命令的顺序应该可以解决这个问题:

COPY ./run.sh /tmp
RUN chmod +x /tmp/run.sh
ENTRYPOINT ["/tmp/run.sh"]

问题在于这一块:

RUN sudo chmod +x run.sh
copy ./run.sh /tmp
ENTRYPOINT ["/tmp/run.sh"]
使run.sh可执行,然后用不可执行的版本覆盖它。切换两个命令的顺序应该可以解决这个问题:

COPY ./run.sh /tmp
RUN chmod +x /tmp/run.sh
ENTRYPOINT ["/tmp/run.sh"]
您正在将生成上下文中的新副本复制到/tmp/run.sh,而没有执行权限。尝试为以下内容更改这些命令

RUN chmod +x run.sh
RUN cp run.sh /tmp
请注意,不需要sudo,因为您已经是root用户

您正在将生成上下文中的新副本复制到/tmp/run.sh,而没有执行权限。尝试为以下内容更改这些命令

RUN chmod +x run.sh
RUN cp run.sh /tmp

请注意,不需要sudo,因为您已经是root用户。

这不起作用,因为WORKDIR处于/src状态,所以/tmp上的副本仍然没有执行权限。这不起作用,因为WORKDIR处于/src状态,所以/tmp上的副本仍然没有执行权限。我的Dockerfile应该是这样的吗?像这样@kyo,是的,别忘了入口哦,是的,你是对的。我忘了。现在就试试,是的。那件事过去了。现在。@codestation你们能帮我解决这个问题吗:我的Dockerfile应该是这样的吗?像这样@kyo,是的,别忘了入口哦,是的,你是对的。我忘了。现在就试试,是的。那件事过去了。现在。@codestation您能帮我解决问题吗: