我有一个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-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
当我跑步时,我不断得到
人们将如何进行进一步的调试?
答案 0 :(得分:2)
RUN sudo chmod +x run.sh
copy ./run.sh /tmp
您正在将未经执行许可从构建上下文复制到/tmp/run.sh
上。尝试更改以下命令。
RUN chmod +x run.sh
RUN cp run.sh /tmp
请注意,因为您已经是root用户,所以不需要sudo。
答案 1 :(得分:1)
问题出在这个区块:
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"]