在Dockerfile"中;php手工存储:链接;返回一个非零代码



我不明白为什么会发生这种情况。我正在尝试创建一个符号链接,但它失败了。只有在容器创建后,我ssh到容器中,它才能工作。当我使用Docker构建我的项目时,我会收到以下错误消息:

Step 11/14 : RUN php artisan storage:link
---> Running in bbfd87dcdbf6
Could not open input file: artisan
ERROR: Service 'php-container' failed to build: The command '/bin/sh -c php artisan storage:link' returned a non-zero code: 1

但是,如果我尝试ssh到我的容器中并运行相同的命令,那么它就可以工作

$ docker exec -it php-container /bin/bash
root@053d9cbd22eb:/var/www# php artisan storage:link
The [/var/www/public/storage] link has been connected to [/var/www/storage/app/public].
The links have been created.

这是我的Dockerfile

FROM php:7.4-fpm
# Set working directory
WORKDIR /var/www
# Install dependencies
RUN apt-get update && apt-get install -y 
build-essential 
libpng-dev 
libjpeg62-turbo-dev 
libfreetype6-dev 
locales 
libzip-dev 
libmcrypt-dev 
libonig-dev 
zlib1g-dev 
zip 
jpegoptim optipng pngquant gifsicle 
vim 
unzip 
git 
graphviz 
curl
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install extensions
RUN docker-php-ext-install pdo_mysql zip exif pcntl
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd
RUN docker-php-ext-install bcmath
# Permissions for Laravel
RUN chown -R www-data:www-data /var/www
RUN chmod -R 777 /var/www
# (!) This is not working.......
RUN php artisan storage:link
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD bash -c "composer install && chmod -R 777 /var/www && php artisan migrate --seed && php-fpm"

您必须在php artisan命令之前运行composer install。这真的很重要。您有错误,因为artisan包不存在,实际上供应商文件夹没有创建。

最后,您必须将docker文件更改为:

CMD bash -c "composer install && chmod -R 777 /var/www && php artisan migrate --seed && php artisan storage:link

最新更新