Эта проблема не дублирует «/ Bin / sh: 1:« apache2ctl »,: не найдено» в докере
Это простой файл докеров, который я использовал для фреймворка laravel в операционной системе ubuntu.
version : '3'
services:
web:
container_name: ${APP_NAME}_web
build:
context: ./docker/web
ports:
- 9000:80
volumes:
- ./:/var/www/app
И это файл докера, расположенный в docker / web
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
Нужна помощь, чтобы исправить это,






Похоже, не установили приложение apache
вы должны добавить еще 1 командную строку в RUN
apt-get install -y apache2 &&\
может ты сможешь запустить CMD ["apache2", '-D', 'FOREGROUND']
Docker_Laravel_web | [Сб, 17 ноября, 23: 00: 15.344434 2018] [core: warn] [pid 1] AH00111: переменная конфигурации $ {APACHE_RUN_DIR} не определена Docker_Laravel_web | apache2: синтаксическая ошибка в строке 80 /etc/apache2/apache2.conf: DefaultRuntimeDir должен быть допустимым каталогом, абсолютным или относительным по отношению к ServerRoot
Думаю проблема в твоей конфигурации
Я исправил это с помощью ответа выше. Спасибо большое за помощь!
Синтаксис Dockerfile, в котором есть вещи, похожие на списки JSON, на самом деле не является JSON и довольно требователен к его цитированию. В частности, в вашей последней строке
CMD ['/usr/sbin/apache2ctl', '-D', 'FOREGROUND']
вы должны использовать двойные кавычки
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
в противном случае Docker интерпретирует это как форму «запустить оболочку с помощью этой команды», поэтому вы видите [ и , в своем сообщении об ошибке.
Нет, Apache2 доступен в образе