standard_init_linux.go:228
Cause of standard_init_linux.go:228
This error standard_init_linux.go:228: exec user process caused: exec format error mainly arises while running any docker file. It can happen that you do not make any changes in the docker container with CMD and ENTRYPOINT then too you are facing this error. The code for this error is:
ROM buildpack-deps:jessie ENV PATH /usr/local/bin:$PATH ENV LANG C.UTF-8 RUN apt-get update && apt-get install -y --no-install-recommends \ tcl \ tk \ && rm -rf /var/lib/apt/lists/* ENV GPG_KEY 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D ENV PYTHON_VERSION 3.6.0 ENV PYTHON_PIP_VERSION 9.0.1 RUN set -ex \ && buildDeps=' \ tcl-dev \ tk-dev \ ' \ && apt-get update && apt-get install -y $buildDeps --no-install-recommends && rm -rf /var/lib/apt/lists/* \ \ && wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" \ && wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" \ && export GNUPGHOME="$(mktemp -d)" \ && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \ && gpg --batch --verify python.tar.xz.asc python.tar.xz \ && rm -r "$GNUPGHOME" python.tar.xz.asc \ && mkdir -p /usr/src/python \ && tar -xJC /usr/src/python --strip-components=1 -f python.tar.xz \ && rm python.tar.xz \ \ && cd /usr/src/python \ && ./configure \ --enable-loadable-sqlite-extensions \ --enable-shared \ && make -j$(nproc) \ && make install \ && ldconfig \ \ && if [ ! -e /usr/local/bin/pip3 ]; then : \ && wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \ && python3 /tmp/get-pip.py "pip==$PYTHON_PIP_VERSION" \ && rm /tmp/get-pip.py \ ; fi \ && pip3 install --no-cache-dir --upgrade --force-reinstall "pip==$PYTHON_PIP_VERSION" \ && [ "$(pip list |tac|tac| awk -F '[ ()]+' '$1 == "pip" { print $2; exit }')" = "$PYTHON_PIP_VERSION" ] \ \ && find /usr/local -depth \ \( \ \( -type d -a -name test -o -name tests \) \ -o \ \( -type f -a -name '*.pyc' -o -name '*.pyo' \) \ \) -exec rm -rf '{}' + \ && apt-get purge -y --auto-remove $buildDeps \ && rm -rf /usr/src/python ~/.cache RUN cd /usr/local/bin \ && { [ -e easy_install ] || ln -s easy_install-* easy_install; } \ && ln -s idle3 idle \ && ln -s pydoc3 pydoc \ && ln -s python3 python \ && ln -s python3-config python-config RUN pip install uwsgi RUN mkdir /config RUN mkdir /logs ENV HOME /var/www WORKDIR /config ADD conf/requirements.txt /config RUN pip install -r /config/requirements.txt ADD conf/wsgi.py /config ADD conf/wsgi.ini /config ADD conf/__init__.py /config ADD start.sh /bin/start.sh RUN chmod +x /bin/start.sh EXPOSE 8000 ENTRYPOINT ["start.sh", "uwsgi", "--ini", "wsgi.ini"]
The error that arises looks like as shown below:
Solution
One of the main problems with this error is that one can forget to mention the following line at the top of the code in the sh file.
If you attempt to execute an x86-produced image on an arm64/aarch64 computer, this may occur. Rebuild the image using the corresponding architecture will be required
Another solution to the above-mentioned error can be the Apple M1 Pro chip in the MacBook Pro, which is based on ARM. For this reason, the Docker build command by default targets arm64. In fact, Docker recognizes the Apple M1 Pro platform as being Linux/arm64/v8. It was sufficient to specify the platform in the version tag and build command:
# Build for ARM64 (default) docker build -t <image-name>:<version>-arm64 . # Build for ARM64 docker build --platform=linux/arm64 -t <image-name>:<version>-arm64 . # Build for AMD64 docker build --platform=linux/amd64 -t <image-name>:<version>-amd64 .
One more cause of this issue is that it typically indicates that you are attempting to run this AMD64 image on a host that is not AMD64 (such as 32-bit or ARM). TRY BUILDING using the —platform Linux/amd64 option in buildx.
Typical Command
docker buildx build -t ranjithkumarmv/node-12.13.0-awscli . --platform linux/amd64
Also Read: show-doc not working in ruby pry