laravel - Docker/user/sbin/apache2ctl:找不到

标签 laravel apache docker

这个问题不是“/bin/sh: 1: “apache2ctl”,: not found” in docker的重复

这是我在ubuntu操作系统中用于laravel框架的简单docker文件。

version : '3'

services:
  web: 
    container_name: ${APP_NAME}_web
    build:
      context: ./docker/web
    ports:
      - 9000:80
    volumes:
      - ./:/var/www/app

这是位于docker / web中的docker文件
FROM php:7.2.10-apache-stretch

RUN apt-get update -yqq && \
    apt-get install -y apt-utils zip unzip && \
    apt-get install -y nano && \
    apt-get install -y libzip-dev libpq-dev && \
    a2enmod rewrite && \
    docker-php-ext-install pdo_pgsql && \
    docker-php-ext-install pgsql && \
    docker-php-ext-configure zip --with-libzip && \
    docker-php-ext-install zip && \
    rm -rf /var/lib/apt/lists/*

RUN php -r "readfile('http://getcomposer.org/installer');"|php -- --install-dir=/usr/bin --filename=composer

COPY Default.conf /etc/apache2/sites-enabled/000-default.conf

WORKDIR /var/www/app

EXPOSE 80

CMD ['/usr/sbin/apache2ctl', '-D', 'FOREGROUND']

当我运行此命令
sudo docker-compose up

终端输出是此错误
Starting Docker_Laravel_web ... done
Attaching to Docker_Laravel_web
Docker_Laravel_web | /bin/sh: 1: [/usr/sbin/apache2ctl,: not found
Docker_Laravel_web exited with code 127

需要一些帮助来解决此问题,

最佳答案

Dockerfile语法具有类似于JSON列表的内容,实际上不是JSON,并且对其引用相当挑剔。特别是在最后一行

CMD ['/usr/sbin/apache2ctl', '-D', 'FOREGROUND']

您必须使用双引号
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

否则,Docker会将其解释为“在此命令上运行 shell 程序”形式,这就是为什么您在错误消息中看到[,的原因。

关于laravel - Docker/user/sbin/apache2ctl:找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53348044/

相关文章:

php - 如何将文件从 laravel 存储复制到项目目录之外的目录中

php - 图像未显示在 .blade 文件中

java - 无法加载 Tomcat 服务器配置

docker - 将卷挂载到 Docker 容器中的用户主目录

python - 连接到 Docker 容器上的 PostgreSQL 数据库

Laravel 混合编译依赖

php - 加快laravel查询速度[解决]

ruby-on-rails - 使用 Apache 通过 HTTPS/SSL 提供 gzip 资源

python - Apache virtualenv 和 mod_wsgi : ImportError : No module named 'django'

docker - Nginx 反向代理不提供静态文件