Saturday, September 3, 2022

[SOLVED] Docker image based on Playwright image runs on my Mac but don't run on Ubuntu server

Issue

When I run this image om my Mac with M1 chip, everything is OK. But when I try to run on server with Ubuntu, container stops with error "exec /bin/sh: exec format error"

FROM mcr.microsoft.com/playwright:v1.18.1-arm64
RUN apt-get -y update && apt-get -y upgrade
ADD build/libs/program.jar /tmp
WORKDIR /tmp
RUN apt-get -y install openjdk-11-jre-headless && apt-get clean;
CMD java -jar program.jar

This error displays on each first command RUN. Even if the command is like "RUN ls -la", I will get "/bin/sh -c ls -la returned a non-zero code: 1".

I tried to change SHELL["bin/bash","-c"] and image version but there was no effect.

If I use "FROM ubuntu", commands work, but I need exactly image for Playwright with browser dependencies.


Solution

You are building an image with ARM architecture (check with docker inspect <your_image> | grep "Archi"). This image cannot be executed on another architecture (probably amd64 for your Ubuntu server).

You should:

  • use an amd64 base image (mcr.microsoft.com/playwright:v1.18.1-arm64 => mcr.microsoft.com/playwright:v1.18.1-focal for example)
  • build your image with docker build --platform linux/amd64


Answered By - norbjd
Answer Checked By - Pedro (WPSolving Volunteer)