我不明白为什么会发生这种情况。我正在尝试创建一个符号链接,但它失败了。只有在容器创建后,我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