Php 定制Docker文件中的安装
无法从docker文件运行Php 定制Docker文件中的安装,php,laravel,docker,makefile,Php,Laravel,Docker,Makefile,无法从docker文件运行make install,不确定我哪里出错了 在ubuntu中运行docker compose build时获取下面的错误消息 Step 6/10 : RUN make install ---> Running in c8f67e8de3b5 make: *** No rule to make target 'install'. Stop. ERROR: Service 'web' failed to build: The command '/
make install
,不确定我哪里出错了
在ubuntu中运行docker compose build
时获取下面的错误消息
Step 6/10 : RUN make install
---> Running in c8f67e8de3b5
make: *** No rule to make target 'install'. Stop.
ERROR: Service 'web' failed to build:
The command '/bin/sh -c make install' returned a non-zero code: 2
我有下面的结构,其中服务器是laravel项目,根目录中有一个docker compose.yml文件
下面是服务器文件夹的结构
docker compose.yml文件
version: '3'
services:
web:
image: api_server
container_name: api_server
build:
context: ./server/release
ports:
- 9000:80
volumes:
- ./server:/var/www/app
Dockerfile
FROM php:7.3.1-apache-stretch
RUN apt-get update -yqq && \
apt-get install -y apt-utils zip unzip && \
apt-get install -y nano && \
apt-get install -y libzip-dev libpq-dev libpng-dev&& \
a2enmod rewrite && \
docker-php-ext-install gd mbstring && \
docker-php-ext-install pdo_pgsql && \
docker-php-ext-install pgsql && \
docker-php-ext-configure zip --with-libzip && \
docker-php-ext-install zip && \
rm -rf /var/lib/apt/lists/*
RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
COPY default.conf /etc/apache2/sites-enabled/000-default.conf
WORKDIR /var/www/app
RUN make install
RUN chown -R www-data:www-data /var/www/app/
RUN chmod -R 777 /var/www/app/storage
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
EXPOSE 80
install:
# some other commands
composer install
refresh:
# For testing
php artisan migrate:refresh
php artisan db:seed
make run:
php artisan migrate:status
php artisan serve
服务器/Makefile
FROM php:7.3.1-apache-stretch
RUN apt-get update -yqq && \
apt-get install -y apt-utils zip unzip && \
apt-get install -y nano && \
apt-get install -y libzip-dev libpq-dev libpng-dev&& \
a2enmod rewrite && \
docker-php-ext-install gd mbstring && \
docker-php-ext-install pdo_pgsql && \
docker-php-ext-install pgsql && \
docker-php-ext-configure zip --with-libzip && \
docker-php-ext-install zip && \
rm -rf /var/lib/apt/lists/*
RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
COPY default.conf /etc/apache2/sites-enabled/000-default.conf
WORKDIR /var/www/app
RUN make install
RUN chown -R www-data:www-data /var/www/app/
RUN chmod -R 777 /var/www/app/storage
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
EXPOSE 80
install:
# some other commands
composer install
refresh:
# For testing
php artisan migrate:refresh
php artisan db:seed
make run:
php artisan migrate:status
php artisan serve
基本上,如果我从Dockerfile中注释运行make install
和运行chmod-R 777/var/www/app/storage
命令,它就可以工作了。为了进行测试,我将进入容器并手动运行上述两个命令,然后显示默认的laravel页面
因此,我觉得尝试从Dockerfile运行上述两个命令时,我想当时没有可用的源代码。该Makefile是如何进入映像的?根据您所显示的内容,
/var/www/app
在运行make install时将是一个空目录。是的,这是我实际发现的。。那么解决办法是什么呢@DavidMaze@DavidMaze是否有其他替代方法?是否已安装?@SebastianWaldbauer是的,我尝试添加build essentials apt包,但仍然存在相同的错误