docker - 运行 composer install 后 Docker 容器以代码 0 退出
问题描述
我有一个看起来像这样的 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
然后我尝试手动重新启动容器,但它会立即关闭。
你对为什么会发生这种情况有什么建议吗?
编辑:在将作曲家添加到 docker 文件之前,一切正常。
解决方案
当 Dockerfile 说
CMD bash -c "cd /var/www && composer install --prefer-dist --no-scripts --no-autoloader"
然后,当您启动容器时,Docker 运行该命令,当该命令完成时,容器退出。由于它显示“退出状态 0”,因此该命令运行成功。
也许您的意思是在 Dockerfile 中composer install
作为一个步骤运行,并有一个实际启动您的服务的步骤。RUN
CMD
推荐阅读
- css - 如何在 Microsoft Edge 中对精灵背景图像放大进行反锯齿处理?
- laravel - Twitter API - 代表用户发布状态/推文
- android - Firebase 存储不在 webview 上显示图像
- spring - 使用 Spring 4.x 的 Solace 连接问题
- visual-studio - “代码 。” 命令无法从 mac 终端打开 Visual Studio Code 运算符
- c++ - 在 MPI 中发送和接收数组
- javascript - 单击时呈现带有单个组件的页面
- robots.txt - 如何取消阻止 robots.txt 文件中的资源?
- vba - 验证列表中的用户输入值
- docker - 在 docker 容器中运行黄瓜和水豚