Em uma instalação do Laradock, para rodar o ambiente em Docker num Mac Silicon computer (MacBook Pro ou M1) seguindo os passos abaixo, o Apache2 não sobe, mostrando erro exited code 2:

Passos

  1. git clone [email protected]:laradock/laradock.git
  2. cd laradock
  3. cp .env.example .env
  4. docker-compose build workspace
  5. docker-compose build apache2
  6. docker-compose up apache2 workspace –> Apache2_1 exited with code 2

Resolvendo o erro Apache2 exited code 2 no Docker com MacOs

Para resolver este problema é necessário editar o arquivo /apache2/Dockerfile, encontrado a partir do diretório do Laradock.

  1. Edite a primeira linha adicionando a plataforma na intrução FROM
FROM --platform=linux/x86_64 webdevops/apache:ubuntu-18.04
  1. Ao final do arquivo, adicione as linhas a seguir para substituição do go:
RUN wget -O "/usr/local/bin/go-replace" "https://github.com/webdevops/goreplace/releases/download/1.1.2/gr-arm64-linux" \
    && chmod +x "/usr/local/bin/go-replace" \
    && "/usr/local/bin/go-replace" --version
  1. A versão final do arquivo deve ficar da seguinte maneira:
#FROM webdevops/apache:ubuntu-18.04
FROM --platform=linux/x86_64 webdevops/apache:ubuntu-18.04

LABEL maintainer="Eric Pfeiffer <[email protected]>"

ARG DOCUMENT_ROOT=/var/www/
ARG PHP_UPSTREAM_CONTAINER=php-fpm
ARG PHP_UPSTREAM_PORT=9000
ARG PHP_UPSTREAM_TIMEOUT=60
ARG APACHE_INSTALL_HTTP2=false

ENV WEB_PHP_SOCKET=${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}
ENV WEB_DOCUMENT_ROOT=${DOCUMENT_ROOT}
ENV APACHE_HTTP2=${APACHE_INSTALL_HTTP2}
ENV WEB_PHP_TIMEOUT=${PHP_UPSTREAM_TIMEOUT}

ENV LOG_STDOUT=/var/log/apache2/access.log

ENV LOG_STDERR=/var/log/apache2/error.log

EXPOSE 80 443

WORKDIR /var/www/

COPY vhost.conf /etc/apache2/sites-enabled/vhost.conf

ADD ./startup.sh /opt/startup.sh

ENTRYPOINT ["/opt/docker/bin/entrypoint.sh"]

CMD ["/bin/bash", "/opt/startup.sh"]

EXPOSE 80 443

RUN wget -O "/usr/local/bin/go-replace" "https://github.com/webdevops/goreplace/releases/download/1.1.2/gr-arm64-linux" \
    && chmod +x "/usr/local/bin/go-replace" \
    && "/usr/local/bin/go-replace" --version
  1. Por fim, faça o build do contêiner Docker e suba novamente:
docker-compose build apache2
docker-compose up -d apache2