【发布时间】:2021-03-26 16:41:15
【问题描述】:
我正在尝试创建一个安装了 npm 和 composer 的 php-apache 容器,并在每个构建中运行 composer install、npm install,但我遇到了错误。
# Dockerfile
FROM php:7.4-apache
RUN apt-get -y update && apt-get upgrade -y
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
npm \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
# Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Enable apache modules
RUN a2enmod rewrite headers
EXPOSE 80
#RUN composer install
#RUN npm install
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
# docker-compose.yml
version: "3"
services:
painel-admin:
build:
context: ./bin/painel-admin
container_name: 'painel-admin'
command: >
sh -c "php /usr/local/bin/composer install"
restart: 'always'
ports:
- "81:80"
- "82:443"
volumes:
- ${DOCUMENT_ROOT-..}:/var/www/html
- ${PHP_INI-./config/php/php.ini}:/usr/local/etc/php/php.ini
- ${VHOSTS_DIR-./config/vhosts}:/etc/apache2/sites-enabled
- ${LOG_DIR-./logs/apache2}:/var/log/apache2
日志错误:
操作“-D FOREGROUND sh -c php /usr/local/bin/composer install”失败。
如果我尝试使用npm install,也会出现同样的错误。
我可以在 docker 中运行命令,但我想自动化
【问题讨论】:
-
最好像你展示的那样在你的 Dockerfile 中
RUN npm install。这意味着COPY将您的应用程序代码放入映像中,而不是将其绑定安装在volumes:中。将映像中的ENTRYPOINT更改为CMD也会使command:覆盖工作,但它会更改容器以运行构建时命令而不是 HTTP 守护进程。 -
您尝试检查什么原因导致该错误?
标签: docker npm docker-compose composer-php