此问题不是“/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
需要一些帮助来解决此问题,
答案 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 &&\