【问题标题】:Problems with composer when creating docker image from laravel project从 laravel 项目创建 docker 映像时作曲家的问题
【发布时间】:2019-10-25 20:00:21
【问题描述】:

我是 docker 新手,但我已阅读 som 指南并尝试创建 docker 映像 来自我的 laravel 项目。

我正在运行的 docker 命令是

sudo docker build -t docker-image .

这是我的 Dockerfile:

FROM composer:1.8.5 as build
WORKDIR /app
COPY . /app
RUN composer install

FROM php:7.3-apache
EXPOSE 80
COPY --from=build /app /app
COPY vhost.conf /etc/apache2/sites-available/000-default.conf
RUN chown -R www-data:www-data /app && a2enmod rewrite

错误出现在步骤 4/9 运行 composer install:

[错误异常]
file_put_contents(/app/vendor/bin/generate-defuse-key):打开失败 流:没有这样的文件或目录

文件存在于/vendor/bin/

谁能告诉我我做错了什么?

【问题讨论】:

  • 你愿意在 nginx 中使用 laravel 吗?
  • @vikash,在 apache 步骤之前出错了。
  • @pei-turn,尝试在不运行安装的情况下构建 composer 步骤,然后运行容器并尝试从内部手动安装。这将使您更好地了解正在发生的事情。
  • @pei-turn 刚刚使用 docker-compose 为 laravel 应用程序添加了 nginx docker 设置。请关注...如果您仍然遇到任何问题,请告诉我。

标签: laravel docker composer-php


【解决方案1】:

我发现问题不是 docker、composer 或 laravel 问题,而是 git 问题。 问题是 git 无法创建符号链接,我在签出项目时错过了错误。当我再次执行所有步骤时,我找到了它。

【讨论】:

    【解决方案2】:

    如果您想使用 nginx 运行您的 laravel 应用程序,您可以使用以下 docker 设置。

    我认为你的申请地址是:/var/www/laravelapp

    所以文件组合如下:

    1。您的 docker-compose 文件:/var/www/laravelapp/docker-compose.yml

    version: "3.1"
    services:
      webserver:
        image: nginx:alpine
        restart: always
        container_name: laravel-webserver
        working_dir: /application
        volumes:
            - /var/www/laravelapp:/application
            - /var/www/laravelapp/docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
        ports:
          - "82:80"
        env_file:
          - .env
        networks: 
          - intranet
    
      php-fpm:
        build: docker/php-fpm
        restart: always
        container_name: laravel-fpm
        working_dir: /application
        volumes:
          - /var/www/laravelapp:/application
        env_file:
          - .env
        networks: 
          - intranet
    
    networks:
      intranet:
        external: false
    
    

    2。 Nginx dockerfile /var/www/laravelapp/docker/Dockerfile

    FROM phpdockerio/php71-fpm:latest
    
    # Install selected extensions and other stuff
    RUN apt-get update \
        && apt-get -y --no-install-recommends install  php7.1-mysql php7.1-mbstring php7.1-gd git \
        && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
    
    
    WORKDIR "/application"
    

    3。 Nginx 主机设置/var/www/laravelapp/docker/nginx/nginx.conf

    
    server {
        listen 80 default;
    
        client_max_body_size 108M;
    
        access_log /var/log/nginx/application.access.log;
    
    
        root /application/public;
        index index.php;
    
        if (!-e $request_filename) {
            rewrite ^.*$ /index.php last;
        }
    
        location ~ \.php$ {
            fastcgi_pass php-fpm:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            include fastcgi_params;
        }
        
    }
    

    如果您还有任何问题,请告诉我。

    【讨论】:

    • @JamesBond 这是使用 docker 运行 laravel 项目的完整配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2017-07-30
    • 1970-01-01
    • 2014-05-07
    相关资源
    最近更新 更多