这是我第一次在项目(Symfony 项目)中使用 Docker。在这个项目中,我没有任何数据库,我只想拥有 PHP 版本(8.3.1)和项目依赖项。
这是我在执行 docker compose up --build 时遇到的错误:
无法解决:进程“/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 相关的内容
在我看来,在将 src 文件夹复制到 /var/www/html 之前,您正在运行 composer install。
我建议
在你的情况下,它会是这样的:
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
感谢您的帮助 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