Php 定制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 '/

无法从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 '/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包,但仍然存在相同的错误