Docker / user / sbin / apache2ctl:找不到

时间:2018-11-17 03:54:40

标签: 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

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

2 个答案:

答案 0 :(得分:2)

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

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

您必须使用双引号

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

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

答案 1 :(得分:0)

好像没有安装apache应用程序

您应该在RUN中再添加1个命令行

apt-get install -y apache2 &&\