In an installation of Laradock, to run the Docker environment in a Mac Silicon Computer (MacBook Pro or M1) Following the steps below, Apache2 does not go up, showing error exited code2:

Steps to reproduce

  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

Fixing the error Apache2 exited code 2 with Docker on MacOs

To solve this problem you need to edit the /apache2/dockerfile file, found from the Laradock directory.

  1. Edit the first line by adding the platform to the From
FROM --platform=linux/x86_64 webdevops/apache:ubuntu-18.04
  1. At the end of the file, add the following lines to replace the 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. The final version of the file should be as follows:
#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. Finally, run the Docker container build and go up again:
docker-compose build apache2
docker-compose up -d apache2