Docker /user/sbin/apache2ctl:未找到

Dan*_*ath 0 apache laravel docker

此问题与\xe2\x80\x9c/bin/sh: 1: \xe2\x80\x9capache2ctl\xe2\x80\x9d,: not found\xe2\x80\x9d in docker 不重复

\n\n

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

\n\n
version : \'3\'\n\nservices:\n  web: \n    container_name: ${APP_NAME}_web\n    build:\n      context: ./docker/web\n    ports:\n      - 9000:80\n    volumes:\n      - ./:/var/www/app\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是位于 docker/web 中的 docker 文件

\n\n
FROM php:7.2.10-apache-stretch\n\nRUN apt-get update -yqq && \\\n    apt-get install -y apt-utils zip unzip && \\\n    apt-get install -y nano && \\\n    apt-get install -y libzip-dev libpq-dev && \\\n    a2enmod rewrite && \\\n    docker-php-ext-install pdo_pgsql && \\\n    docker-php-ext-install pgsql && \\\n    docker-php-ext-configure zip --with-libzip && \\\n    docker-php-ext-install zip && \\\n    rm -rf /var/lib/apt/lists/*\n\nRUN php -r "readfile(\'http://getcomposer.org/installer\');"|php -- --install-dir=/usr/bin --filename=composer\n\nCOPY Default.conf /etc/apache2/sites-enabled/000-default.conf\n\nWORKDIR /var/www/app\n\nEXPOSE 80\n\nCMD [\'/usr/sbin/apache2ctl\', \'-D\', \'FOREGROUND\']\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我运行这个命令时

\n\n
sudo docker-compose up\n
Run Code Online (Sandbox Code Playgroud)\n\n

终端输出是这个错误

\n\n
Starting Docker_Laravel_web ... done\nAttaching to Docker_Laravel_web\nDocker_Laravel_web | /bin/sh: 1: [/usr/sbin/apache2ctl,: not found\nDocker_Laravel_web exited with code 127\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n

Dav*_*aze 5

Dockerfile 语法中的内容看起来像 JSON 列表,但实际上并不是 JSON,并且对其引用相当挑剔。特别是在你的最后一行

CMD ['/usr/sbin/apache2ctl', '-D', 'FOREGROUND']
Run Code Online (Sandbox Code Playgroud)

你必须使用双引号

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Run Code Online (Sandbox Code Playgroud)

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