Symfony 6 Dockerfile:无法打开输入文件:./bin/console

问题描述 投票:0回答:2

这是我第一次在项目(Symfony 项目)中使用 Docker。在这个项目中,我没有任何数据库,我只想拥有 PHP 版本(8.3.1)和项目依赖项。

这是我在执行 docker compose up --build 时遇到的错误:

1.025 执行脚本缓存:清除[KO] 1.031【击倒】 1.031 脚本缓存:清除返回错误代码 1 1.031!!无法打开输入文件:./bin/console 1.031!! 1.031 通过 post-install-cmd 调用脚本 @auto-scripts

无法解决:进程“/bin/sh -c Composer install --no-dev --no-interaction”未成功完成:退出代码:1

这是我的 Dockerfile :

FROM composer:lts as deps

WORKDIR /app

RUN --mount=type=bind,source=composer.json,target=composer.json \
    --mount=type=bind,source=composer.lock,target=composer.lock \
    --mount=type=cache,target=/tmp/cache \
    composer install --no-dev --no-interaction

FROM php:8.3.1-apache as final

RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

COPY --from=deps app/vendor/ /var/www/html/vendor

COPY src /var/www/html

USER www-data

这是我的 compose.yml 文件:

服务: 服务器: 建造: 语境: 。 端口: - 9000:80

我尝试在网上寻找解决方案,但我最近没有发现任何与 Symfony with Docker 相关的内容

php docker symfony dockerfile composer-php
2个回答
0
投票

在我看来,在将 src 文件夹复制到 /var/www/html 之前,您正在运行 composer install

我建议

  1. 从基础 PHP 镜像开始
  2. 移动src文件夹
  3. 安装作曲家
  4. 运行作曲家安装。

在你的情况下,它会是这样的:

FROM php:8.3.1-apache

#Update and install php dependencies
RUN apt-get update && \
    apt-get install nano zip unzip wget git locales locales-all libcurl4-openssl-dev libjpeg-dev libpng-dev libzip-dev pkg-config libssl-dev -y && \
    docker-php-ext-install pdo_mysql bcmath
RUN pecl install mongodb && docker-php-ext-enable mongodb

RUN docker-php-ext-configure gd \
    && docker-php-ext-install gd \
    && docker-php-ext-enable gd

RUN docker-php-ext-configure zip \
    && docker-php-ext-install zip

# Copy code
WORKDIR /var/www/html/

COPY src .

# install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
    php composer-setup.php && \
    php -r "unlink('composer-setup.php');" && \
    mv composer.phar /usr/local/bin/composer

# install project php dependencies
RUN composer install

# Other layers follow

0
投票

感谢您的帮助 carloliwanag,我必须添加两行才能使其正常工作。

这是我现在的代码:

FROM php:8.3.1-apache

#Update and install php dependencies
RUN apt-get update && \
    apt-get install nano zip unzip wget git locales locales-all libcurl4-openssl-dev libjpeg-dev libpng-dev libzip-dev pkg-config libssl-dev -y && \
    docker-php-ext-install pdo_mysql bcmath
RUN pecl install mongodb && docker-php-ext-enable mongodb

RUN docker-php-ext-configure gd \
    && docker-php-ext-install gd \
    && docker-php-ext-enable gd

RUN docker-php-ext-configure zip \
    && docker-php-ext-install zip

# Copy code
WORKDIR /var/www/html/

COPY src .

COPY composer.json .

# install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
    php composer-setup.php && \
    php -r "unlink('composer-setup.php');" && \
    mv composer.phar /usr/local/bin/composer

# install project php dependencies
ENV COMPOSER_ALLOW_SUPERUSER=1

RUN composer install
© www.soinside.com 2019 - 2024. All rights reserved.