繁体   English   中英

运行composer安装后,Docker容器以代码0退出

[英]Docker container exits with code 0 after running composer install

我有一个看起来像这样的docker文件:

FROM php:7.0-apache
MAINTAINER "Moritz Buettner"

RUN apt-get update && apt-get install -y libpq-dev >/dev/null 2>&1\
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql >/dev/null 2>&1\
    && docker-php-ext-install pdo pdo_pgsql pgsql mbstring >/dev/null 2>&1

RUN curl -sS https://getcomposer.org/installer | php \
      && chmod +x composer.phar && mv composer.phar /usr/local/bin/composer

RUN apt-get install -y git >/dev/null 2>&1
RUN apt-get install -y zip >/dev/null 2>&1
RUN apt-get install -y unzip >/dev/null 2>&1

COPY api /var/www
RUN a2enmod rewrite && rm -r /var/www/html && ln -sf /var/www/public /var/www/html
RUN chmod -R 777 /var/www

RUN mkdir -m 777 -p /var/www/public/export-files/csv

CMD bash -c "cd /var/www && composer install --prefer-dist --no-scripts --no-autoloader"

在构建映像并运行容器时,composer会按预期安装所有内容,但是一旦完成,容器将以代码0退出。

docker-compose up的输出:

[... composer installing stuff ...]
inventar-api | Generating autoload files
inventar-api | > Illuminate\Foundation\ComposerScripts::postInstall
inventar-api | > php artisan optimize
inventar-api | Generating optimized class loader
inventar-api | The compiled class file has been removed.
inventar-api exited with code 0

然后,我尝试手动重新启动容器,但该容器立即关闭。

您对此有何建议?

编辑:在将composer添加到docker文件之前,一切正常。

当Dockerfile说

CMD bash -c "cd /var/www && composer install --prefer-dist --no-scripts --no-autoloader"

然后,当您启动容器时,Docker运行该命令,并在该命令完成后退出容器。 由于它显示“退出状态0”,因此命令成功运行。

也许您的意思是在Dockerfile内的RUN步骤中运行composer install ,并拥有实际上启动您的服务的CMD

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM