首页 > 解决方案 > 在 Docker 文件中自定义安装

问题描述

无法make install从 docker 文件运行,不确定我哪里出错了。

docker-compose build在 ubuntu 中运行时出现以下错误消息

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

服务器/Makefile

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

基本上,如果我从DockerfileRUN make install发表评论和RUN chmod -R 777 /var/www/app/storage命令,它就可以工作。为了测试,我将进入容器并手动运行上述 2 个命令,然后通过显示默认的 laravel 页面来工作。

所以我觉得尝试从Dockerfile运行上述 2 个命令,我猜当时源代码不可用。

标签: phplaraveldockermakefile

解决方案


推荐阅读