microsoft/IoT-For-Beginners

"exec format error" in docker build

marty-optum opened this issue · 4 comments

I am going through the build your container task in the Run your fruit detector on the edge lesson using a Raspberry Pi. I am connecting to the Pi remotely from a mac with macOS 11.6 (Big Sur). The Raspberry Pi is using Python 3.7.3.

I have successfully completed all of the tasks up to the build your container task, so I feel good that the fruit-detector-edge model has been trained, the docker image has been created, and the container registry has been created in Azure.

However, when I try to run the following command (substituting in "linux/arm64" for <platform>, and my container registry name for <Container registry name>) to build and tag the image, I get errors.

docker build --platform <platform> -t <Container registry name>.azurecr.io/classifier:v1 .

The error message return is as follows:

standard_init_linux.go:211: exec user process caused "exec format error"
The command '/bin/sh -c apt update && apt install -y libjpeg62-turbo libopenjp2-7 libtiff5 libatlas-base-dev libgl1-mesa-glx' returned a non-zero code: 1

Here is a screenshot for further context:

image

Notes:

  • I tried running this command both locally on the Mac, and on the Raspberry Pi. The exports above are from the Pi.
  • When running it on the Pi, I tried both with and without the --platform linux/arm64 option. Didn't seem to make a difference.
  • If I commented all of the RUN commands in the Dockerfile, then ran them one by one as root (type "sudo su"), this seemed to run each apt and pip command from the Dockerfile just fine. Note: this approach would NOT work if I tried running them as the pi user or by typing sudo (I would get other errors).

Any idea what's going on? It seems as if the Dockerfile being generated and exported on the CustomVision.ai portal may have some assumptions/errors for the mac & Pi combination?

Sorry to take so long to get back to this - there have been some issues with the version of docker installed with the IoT edge setup, and been working with the team on those.

If you use the latest install instructions for IoT edge from the MS docs which are linked in the lesson, then it should now work - there's updates to support Bullseye. Just worked through it myself and built the container with no issues.

Can you re-test using the latest Raspberry Pi OS and the instructions to install IoT Edge/Docker here: https://docs.microsoft.com/en-us/azure/iot-edge/how-to-provision-single-device-linux-symmetric?WT.mc_id=academic-17441-jabenn&view=iotedge-2020-11&tabs=azure-portal%2Crpios

Docker output ```output pi@raspberrypi:~/fruit-quality-detector/container $ sudo docker build -t classifier:1.0 . Sending build context to Docker daemon 8.859MB Step 1/9 : FROM python:3.7-slim 3.7-slim: Pulling from library/python eeb117569618: Pull complete 17fed3d383f0: Pull complete a0b49974a115: Pull complete 4869dd6bb65f: Pull complete 5fb2152ab005: Pull complete Digest: sha256:f61a4c6266a902630324fc10814b1109b3f91ac86dfb25fa3fa77496e62f96f5 Status: Downloaded newer image for python:3.7-slim ---> 4717ac8dcdb0 Step 2/9 : RUN apt update && apt install -y libjpeg62-turbo libopenjp2-7 libtiff5 libatlas-base-dev libgl1-mesa-glx ---> Running in 529c19c01047

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]
Get:2 http://security.debian.org/debian-security bullseye-security InRelease [44.1 kB]
Get:3 http://deb.debian.org/debian bullseye-updates InRelease [39.4 kB]
Get:4 http://security.debian.org/debian-security bullseye-security/main armhf Packages [160 kB]
Get:5 http://deb.debian.org/debian bullseye/main armhf Packages [7944 kB]
Get:6 http://deb.debian.org/debian bullseye-updates/main armhf Packages [2604 B]
Fetched 8306 kB in 5s (1632 kB/s)
Reading package lists...
Building dependency tree...
Reading state information...
1 package can be upgraded. Run 'apt list --upgradable' to see it.

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
libatlas3-base libbsd0 libdeflate0 libdrm-amdgpu1 libdrm-common
libdrm-nouveau2 libdrm-radeon1 libdrm2 libedit2 libelf1 libgfortran5 libgl1
libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libjbig0
libllvm11 libmd0 libsensors-config libsensors5 libvulkan1 libwayland-client0
libwebp6 libx11-6 libx11-data libx11-xcb1 libxau6 libxcb-dri2-0
libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-shm0
libxcb-sync1 libxcb-xfixes0 libxcb1 libxdamage1 libxdmcp6 libxext6
libxfixes3 libxshmfence1 libxxf86vm1 libz3-4 mesa-vulkan-drivers
Suggested packages:
libatlas-doc liblapack-doc lm-sensors
The following NEW packages will be installed:
libatlas-base-dev libatlas3-base libbsd0 libdeflate0 libdrm-amdgpu1
libdrm-common libdrm-nouveau2 libdrm-radeon1 libdrm2 libedit2 libelf1
libgfortran5 libgl1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libglvnd0
libglx-mesa0 libglx0 libjbig0 libjpeg62-turbo libllvm11 libmd0 libopenjp2-7
libsensors-config libsensors5 libtiff5 libvulkan1 libwayland-client0
libwebp6 libx11-6 libx11-data libx11-xcb1 libxau6 libxcb-dri2-0
libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-shm0
libxcb-sync1 libxcb-xfixes0 libxcb1 libxdamage1 libxdmcp6 libxext6
libxfixes3 libxshmfence1 libxxf86vm1 libz3-4 mesa-vulkan-drivers
0 upgraded, 51 newly installed, 0 to remove and 1 not upgraded.
Need to get 39.5 MB of archives.
After this operation, 147 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bullseye/main armhf libgfortran5 armhf 10.2.1-6 [237 kB]
Get:2 http://security.debian.org/debian-security bullseye-security/main armhf libtiff5 armhf 4.2.0-1+deb11u1 [272 kB]
Get:3 http://deb.debian.org/debian bullseye/main armhf libatlas3-base armhf 3.10.3-10 [2381 kB]
Get:4 http://deb.debian.org/debian bullseye/main armhf libatlas-base-dev armhf 3.10.3-10 [2564 kB]
Get:5 http://deb.debian.org/debian bullseye/main armhf libmd0 armhf 1.0.3-3 [27.4 kB]
Get:6 http://deb.debian.org/debian bullseye/main armhf libbsd0 armhf 0.11.3-1 [103 kB]
Get:7 http://deb.debian.org/debian bullseye/main armhf libdeflate0 armhf 1.7-1 [43.1 kB]
Get:8 http://deb.debian.org/debian bullseye/main armhf libdrm-common all 2.4.104-1 [14.9 kB]
Get:9 http://deb.debian.org/debian bullseye/main armhf libdrm2 armhf 2.4.104-1 [37.7 kB]
Get:10 http://deb.debian.org/debian bullseye/main armhf libdrm-amdgpu1 armhf 2.4.104-1 [27.1 kB]
Get:11 http://deb.debian.org/debian bullseye/main armhf libdrm-nouveau2 armhf 2.4.104-1 [24.6 kB]
Get:12 http://deb.debian.org/debian bullseye/main armhf libdrm-radeon1 armhf 2.4.104-1 [27.6 kB]
Get:13 http://deb.debian.org/debian bullseye/main armhf libedit2 armhf 3.1-20191231-2+b1 [81.1 kB]
Get:14 http://deb.debian.org/debian bullseye/main armhf libelf1 armhf 0.183-1 [161 kB]
Get:15 http://deb.debian.org/debian bullseye/main armhf libglapi-mesa armhf 20.3.5-1 [80.2 kB]
Get:16 http://deb.debian.org/debian bullseye/main armhf libz3-4 armhf 4.8.10-1 [5959 kB]
Get:17 http://deb.debian.org/debian bullseye/main armhf libllvm11 armhf 1:11.0.1-2 [15.4 MB]
Get:18 http://deb.debian.org/debian bullseye/main armhf libsensors-config all 1:3.6.0-7 [32.3 kB]
Get:19 http://deb.debian.org/debian bullseye/main armhf libsensors5 armhf 1:3.6.0-7 [49.6 kB]
Get:20 http://deb.debian.org/debian bullseye/main armhf libvulkan1 armhf 1.2.162.0-1 [84.3 kB]
Get:21 http://deb.debian.org/debian bullseye/main armhf libgl1-mesa-dri armhf 20.3.5-1 [6037 kB]
Get:22 http://deb.debian.org/debian bullseye/main armhf libglvnd0 armhf 1.3.2-1 [51.8 kB]
Get:23 http://deb.debian.org/debian bullseye/main armhf libxau6 armhf 1:1.0.9-1 [19.0 kB]
Get:24 http://deb.debian.org/debian bullseye/main armhf libxdmcp6 armhf 1:1.1.2-3 [24.9 kB]
Get:25 http://deb.debian.org/debian bullseye/main armhf libxcb1 armhf 1.14-3 [136 kB]
Get:26 http://deb.debian.org/debian bullseye/main armhf libx11-data all 2:1.7.2-1 [311 kB]
Get:27 http://deb.debian.org/debian bullseye/main armhf libx11-6 armhf 2:1.7.2-1 [713 kB]
Get:28 http://deb.debian.org/debian bullseye/main armhf libx11-xcb1 armhf 2:1.7.2-1 [203 kB]
Get:29 http://deb.debian.org/debian bullseye/main armhf libxcb-dri2-0 armhf 1.14-3 [103 kB]
Get:30 http://deb.debian.org/debian bullseye/main armhf libxcb-dri3-0 armhf 1.14-3 [102 kB]
Get:31 http://deb.debian.org/debian bullseye/main armhf libxcb-glx0 armhf 1.14-3 [116 kB]
Get:32 http://deb.debian.org/debian bullseye/main armhf libxcb-present0 armhf 1.14-3 [101 kB]
Get:33 http://deb.debian.org/debian bullseye/main armhf libxcb-shm0 armhf 1.14-3 [101 kB]
Get:34 http://deb.debian.org/debian bullseye/main armhf libxcb-sync1 armhf 1.14-3 [104 kB]
Get:35 http://deb.debian.org/debian bullseye/main armhf libxcb-xfixes0 armhf 1.14-3 [105 kB]
Get:36 http://deb.debian.org/debian bullseye/main armhf libxdamage1 armhf 1:1.1.5-2 [15.1 kB]
Get:37 http://deb.debian.org/debian bullseye/main armhf libxext6 armhf 2:1.3.3-1.1 [47.8 kB]
Get:38 http://deb.debian.org/debian bullseye/main armhf libxfixes3 armhf 1:5.0.3-2 [20.6 kB]
Get:39 http://deb.debian.org/debian bullseye/main armhf libxshmfence1 armhf 1.3-1 [8592 B]
Get:40 http://deb.debian.org/debian bullseye/main armhf libxxf86vm1 armhf 1:1.1.4-1+b2 [20.2 kB]
Get:41 http://deb.debian.org/debian bullseye/main armhf libglx-mesa0 armhf 20.3.5-1 [167 kB]
Get:42 http://deb.debian.org/debian bullseye/main armhf libglx0 armhf 1.3.2-1 [32.8 kB]
Get:43 http://deb.debian.org/debian bullseye/main armhf libgl1 armhf 1.3.2-1 [94.3 kB]
Get:44 http://deb.debian.org/debian bullseye/main armhf libgl1-mesa-glx armhf 20.3.5-1 [51.1 kB]
Get:45 http://deb.debian.org/debian bullseye/main armhf libjbig0 armhf 2.1-3.1+b2 [28.4 kB]
Get:46 http://deb.debian.org/debian bullseye/main armhf libjpeg62-turbo armhf 1:2.0.6-4 [123 kB]
Get:47 http://deb.debian.org/debian bullseye/main armhf libopenjp2-7 armhf 2.4.0-3 [154 kB]
Get:48 http://deb.debian.org/debian bullseye/main armhf libwebp6 armhf 0.6.1-2.1 [226 kB]
Get:49 http://deb.debian.org/debian bullseye/main armhf libwayland-client0 armhf 1.18.0-2exp1.1 [22.1 kB]
Get:50 http://deb.debian.org/debian bullseye/main armhf libxcb-randr0 armhf 1.14-3 [112 kB]
Get:51 http://deb.debian.org/debian bullseye/main armhf mesa-vulkan-drivers armhf 20.3.5-1 [2449 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 39.5 MB in 8s (4722 kB/s)
Selecting previously unselected package libgfortran5:armhf.
(Reading database ... 7025 files and directories currently installed.)
Preparing to unpack .../00-libgfortran5_10.2.1-6_armhf.deb ...
Unpacking libgfortran5:armhf (10.2.1-6) ...
Selecting previously unselected package libatlas3-base:armhf.
Preparing to unpack .../01-libatlas3-base_3.10.3-10_armhf.deb ...
Unpacking libatlas3-base:armhf (3.10.3-10) ...
Selecting previously unselected package libatlas-base-dev:armhf.
Preparing to unpack .../02-libatlas-base-dev_3.10.3-10_armhf.deb ...
Unpacking libatlas-base-dev:armhf (3.10.3-10) ...
Selecting previously unselected package libmd0:armhf.
Preparing to unpack .../03-libmd0_1.0.3-3_armhf.deb ...
Unpacking libmd0:armhf (1.0.3-3) ...
Selecting previously unselected package libbsd0:armhf.
Preparing to unpack .../04-libbsd0_0.11.3-1_armhf.deb ...
Unpacking libbsd0:armhf (0.11.3-1) ...
Selecting previously unselected package libdeflate0:armhf.
Preparing to unpack .../05-libdeflate0_1.7-1_armhf.deb ...
Unpacking libdeflate0:armhf (1.7-1) ...
Selecting previously unselected package libdrm-common.
Preparing to unpack .../06-libdrm-common_2.4.104-1_all.deb ...
Unpacking libdrm-common (2.4.104-1) ...
Selecting previously unselected package libdrm2:armhf.
Preparing to unpack .../07-libdrm2_2.4.104-1_armhf.deb ...
Unpacking libdrm2:armhf (2.4.104-1) ...
Selecting previously unselected package libdrm-amdgpu1:armhf.
Preparing to unpack .../08-libdrm-amdgpu1_2.4.104-1_armhf.deb ...
Unpacking libdrm-amdgpu1:armhf (2.4.104-1) ...
Selecting previously unselected package libdrm-nouveau2:armhf.
Preparing to unpack .../09-libdrm-nouveau2_2.4.104-1_armhf.deb ...
Unpacking libdrm-nouveau2:armhf (2.4.104-1) ...
Selecting previously unselected package libdrm-radeon1:armhf.
Preparing to unpack .../10-libdrm-radeon1_2.4.104-1_armhf.deb ...
Unpacking libdrm-radeon1:armhf (2.4.104-1) ...
Selecting previously unselected package libedit2:armhf.
Preparing to unpack .../11-libedit2_3.1-20191231-2+b1_armhf.deb ...
Unpacking libedit2:armhf (3.1-20191231-2+b1) ...
Selecting previously unselected package libelf1:armhf.
Preparing to unpack .../12-libelf1_0.183-1_armhf.deb ...
Unpacking libelf1:armhf (0.183-1) ...
Selecting previously unselected package libglapi-mesa:armhf.
Preparing to unpack .../13-libglapi-mesa_20.3.5-1_armhf.deb ...
Unpacking libglapi-mesa:armhf (20.3.5-1) ...
Selecting previously unselected package libz3-4:armhf.
Preparing to unpack .../14-libz3-4_4.8.10-1_armhf.deb ...
Unpacking libz3-4:armhf (4.8.10-1) ...
Selecting previously unselected package libllvm11:armhf.
Preparing to unpack .../15-libllvm11_1%3a11.0.1-2_armhf.deb ...
Unpacking libllvm11:armhf (1:11.0.1-2) ...
Selecting previously unselected package libsensors-config.
Preparing to unpack .../16-libsensors-config_1%3a3.6.0-7_all.deb ...
Unpacking libsensors-config (1:3.6.0-7) ...
Selecting previously unselected package libsensors5:armhf.
Preparing to unpack .../17-libsensors5_1%3a3.6.0-7_armhf.deb ...
Unpacking libsensors5:armhf (1:3.6.0-7) ...
Selecting previously unselected package libvulkan1:armhf.
Preparing to unpack .../18-libvulkan1_1.2.162.0-1_armhf.deb ...
Unpacking libvulkan1:armhf (1.2.162.0-1) ...
Selecting previously unselected package libgl1-mesa-dri:armhf.
Preparing to unpack .../19-libgl1-mesa-dri_20.3.5-1_armhf.deb ...
Unpacking libgl1-mesa-dri:armhf (20.3.5-1) ...
Selecting previously unselected package libglvnd0:armhf.
Preparing to unpack .../20-libglvnd0_1.3.2-1_armhf.deb ...
Unpacking libglvnd0:armhf (1.3.2-1) ...
Selecting previously unselected package libxau6:armhf.
Preparing to unpack .../21-libxau6_1%3a1.0.9-1_armhf.deb ...
Unpacking libxau6:armhf (1:1.0.9-1) ...
Selecting previously unselected package libxdmcp6:armhf.
Preparing to unpack .../22-libxdmcp6_1%3a1.1.2-3_armhf.deb ...
Unpacking libxdmcp6:armhf (1:1.1.2-3) ...
Selecting previously unselected package libxcb1:armhf.
Preparing to unpack .../23-libxcb1_1.14-3_armhf.deb ...
Unpacking libxcb1:armhf (1.14-3) ...
Selecting previously unselected package libx11-data.
Preparing to unpack .../24-libx11-data_2%3a1.7.2-1_all.deb ...
Unpacking libx11-data (2:1.7.2-1) ...
Selecting previously unselected package libx11-6:armhf.
Preparing to unpack .../25-libx11-6_2%3a1.7.2-1_armhf.deb ...
Unpacking libx11-6:armhf (2:1.7.2-1) ...
Selecting previously unselected package libx11-xcb1:armhf.
Preparing to unpack .../26-libx11-xcb1_2%3a1.7.2-1_armhf.deb ...
Unpacking libx11-xcb1:armhf (2:1.7.2-1) ...
Selecting previously unselected package libxcb-dri2-0:armhf.
Preparing to unpack .../27-libxcb-dri2-0_1.14-3_armhf.deb ...
Unpacking libxcb-dri2-0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-dri3-0:armhf.
Preparing to unpack .../28-libxcb-dri3-0_1.14-3_armhf.deb ...
Unpacking libxcb-dri3-0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-glx0:armhf.
Preparing to unpack .../29-libxcb-glx0_1.14-3_armhf.deb ...
Unpacking libxcb-glx0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-present0:armhf.
Preparing to unpack .../30-libxcb-present0_1.14-3_armhf.deb ...
Unpacking libxcb-present0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-shm0:armhf.
Preparing to unpack .../31-libxcb-shm0_1.14-3_armhf.deb ...
Unpacking libxcb-shm0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-sync1:armhf.
Preparing to unpack .../32-libxcb-sync1_1.14-3_armhf.deb ...
Unpacking libxcb-sync1:armhf (1.14-3) ...
Selecting previously unselected package libxcb-xfixes0:armhf.
Preparing to unpack .../33-libxcb-xfixes0_1.14-3_armhf.deb ...
Unpacking libxcb-xfixes0:armhf (1.14-3) ...
Selecting previously unselected package libxdamage1:armhf.
Preparing to unpack .../34-libxdamage1_1%3a1.1.5-2_armhf.deb ...
Unpacking libxdamage1:armhf (1:1.1.5-2) ...
Selecting previously unselected package libxext6:armhf.
Preparing to unpack .../35-libxext6_2%3a1.3.3-1.1_armhf.deb ...
Unpacking libxext6:armhf (2:1.3.3-1.1) ...
Selecting previously unselected package libxfixes3:armhf.
Preparing to unpack .../36-libxfixes3_1%3a5.0.3-2_armhf.deb ...
Unpacking libxfixes3:armhf (1:5.0.3-2) ...
Selecting previously unselected package libxshmfence1:armhf.
Preparing to unpack .../37-libxshmfence1_1.3-1_armhf.deb ...
Unpacking libxshmfence1:armhf (1.3-1) ...
Selecting previously unselected package libxxf86vm1:armhf.
Preparing to unpack .../38-libxxf86vm1_1%3a1.1.4-1+b2_armhf.deb ...
Unpacking libxxf86vm1:armhf (1:1.1.4-1+b2) ...
Selecting previously unselected package libglx-mesa0:armhf.
Preparing to unpack .../39-libglx-mesa0_20.3.5-1_armhf.deb ...
Unpacking libglx-mesa0:armhf (20.3.5-1) ...
Selecting previously unselected package libglx0:armhf.
Preparing to unpack .../40-libglx0_1.3.2-1_armhf.deb ...
Unpacking libglx0:armhf (1.3.2-1) ...
Selecting previously unselected package libgl1:armhf.
Preparing to unpack .../41-libgl1_1.3.2-1_armhf.deb ...
Unpacking libgl1:armhf (1.3.2-1) ...
Selecting previously unselected package libgl1-mesa-glx:armhf.
Preparing to unpack .../42-libgl1-mesa-glx_20.3.5-1_armhf.deb ...
Unpacking libgl1-mesa-glx:armhf (20.3.5-1) ...
Selecting previously unselected package libjbig0:armhf.
Preparing to unpack .../43-libjbig0_2.1-3.1+b2_armhf.deb ...
Unpacking libjbig0:armhf (2.1-3.1+b2) ...
Selecting previously unselected package libjpeg62-turbo:armhf.
Preparing to unpack .../44-libjpeg62-turbo_1%3a2.0.6-4_armhf.deb ...
Unpacking libjpeg62-turbo:armhf (1:2.0.6-4) ...
Selecting previously unselected package libopenjp2-7:armhf.
Preparing to unpack .../45-libopenjp2-7_2.4.0-3_armhf.deb ...
Unpacking libopenjp2-7:armhf (2.4.0-3) ...
Selecting previously unselected package libwebp6:armhf.
Preparing to unpack .../46-libwebp6_0.6.1-2.1_armhf.deb ...
Unpacking libwebp6:armhf (0.6.1-2.1) ...
Selecting previously unselected package libtiff5:armhf.
Preparing to unpack .../47-libtiff5_4.2.0-1+deb11u1_armhf.deb ...
Unpacking libtiff5:armhf (4.2.0-1+deb11u1) ...
Selecting previously unselected package libwayland-client0:armhf.
Preparing to unpack .../48-libwayland-client0_1.18.0-2
exp1.1_armhf.deb ...
Unpacking libwayland-client0:armhf (1.18.0-2exp1.1) ...
Selecting previously unselected package libxcb-randr0:armhf.
Preparing to unpack .../49-libxcb-randr0_1.14-3_armhf.deb ...
Unpacking libxcb-randr0:armhf (1.14-3) ...
Selecting previously unselected package mesa-vulkan-drivers:armhf.
Preparing to unpack .../50-mesa-vulkan-drivers_20.3.5-1_armhf.deb ...
Unpacking mesa-vulkan-drivers:armhf (20.3.5-1) ...
Setting up libxau6:armhf (1:1.0.9-1) ...
Setting up libglvnd0:armhf (1.3.2-1) ...
Setting up libsensors-config (1:3.6.0-7) ...
Setting up libdeflate0:armhf (1.7-1) ...
Setting up libjbig0:armhf (2.1-3.1+b2) ...
Setting up libz3-4:armhf (4.8.10-1) ...
Setting up libjpeg62-turbo:armhf (1:2.0.6-4) ...
Setting up libx11-data (2:1.7.2-1) ...
Setting up libwebp6:armhf (0.6.1-2.1) ...
Setting up libsensors5:armhf (1:3.6.0-7) ...
Setting up libglapi-mesa:armhf (20.3.5-1) ...
Setting up libgfortran5:armhf (10.2.1-6) ...
Setting up libvulkan1:armhf (1.2.162.0-1) ...
Setting up libmd0:armhf (1.0.3-3) ...
Setting up libxshmfence1:armhf (1.3-1) ...
Setting up libopenjp2-7:armhf (2.4.0-3) ...
Setting up libtiff5:armhf (4.2.0-1+deb11u1) ...
Setting up libbsd0:armhf (0.11.3-1) ...
Setting up libdrm-common (2.4.104-1) ...
Setting up libelf1:armhf (0.183-1) ...
Setting up libwayland-client0:armhf (1.18.0-2
exp1.1) ...
Setting up libxdmcp6:armhf (1:1.1.2-3) ...
Setting up libxcb1:armhf (1.14-3) ...
Setting up libxcb-xfixes0:armhf (1.14-3) ...
Setting up libatlas3-base:armhf (3.10.3-10) ...
update-alternatives: using /usr/lib/arm-linux-gnueabihf/atlas/libblas.so.3 to provide /usr/lib/arm-linux-gnueabihf/libblas.so.3 (libblas.so.3-arm-linux-gnueabihf) in auto mode
update-alternatives: using /usr/lib/arm-linux-gnueabihf/atlas/liblapack.so.3 to provide /usr/lib/arm-linux-gnueabihf/liblapack.so.3 (liblapack.so.3-arm-linux-gnueabihf) in auto mode
Setting up libxcb-glx0:armhf (1.14-3) ...
Setting up libedit2:armhf (3.1-20191231-2+b1) ...
Setting up libxcb-shm0:armhf (1.14-3) ...
Setting up libatlas-base-dev:armhf (3.10.3-10) ...
update-alternatives: using /usr/lib/arm-linux-gnueabihf/atlas/libblas.so to provide /usr/lib/arm-linux-gnueabihf/libblas.so (libblas.so-arm-linux-gnueabihf) in auto mode
update-alternatives: using /usr/lib/arm-linux-gnueabihf/atlas/liblapack.so to provide /usr/lib/arm-linux-gnueabihf/liblapack.so (liblapack.so-arm-linux-gnueabihf) in auto mode
Setting up libxcb-present0:armhf (1.14-3) ...
Setting up libllvm11:armhf (1:11.0.1-2) ...
Setting up libxcb-sync1:armhf (1.14-3) ...
Setting up libxcb-dri2-0:armhf (1.14-3) ...
Setting up libdrm2:armhf (2.4.104-1) ...
Setting up libxcb-randr0:armhf (1.14-3) ...
Setting up libx11-6:armhf (2:1.7.2-1) ...
Setting up libdrm-amdgpu1:armhf (2.4.104-1) ...
Setting up libxcb-dri3-0:armhf (1.14-3) ...
Setting up libx11-xcb1:armhf (2:1.7.2-1) ...
Setting up libdrm-nouveau2:armhf (2.4.104-1) ...
Setting up libxdamage1:armhf (1:1.1.5-2) ...
Setting up libdrm-radeon1:armhf (2.4.104-1) ...
Setting up libgl1-mesa-dri:armhf (20.3.5-1) ...
Setting up libxext6:armhf (2:1.3.3-1.1) ...
Setting up libxxf86vm1:armhf (1:1.1.4-1+b2) ...
Setting up libxfixes3:armhf (1:5.0.3-2) ...
Setting up mesa-vulkan-drivers:armhf (20.3.5-1) ...
Setting up libglx-mesa0:armhf (20.3.5-1) ...
Setting up libglx0:armhf (1.3.2-1) ...
Setting up libgl1:armhf (1.3.2-1) ...
Setting up libgl1-mesa-glx:armhf (20.3.5-1) ...
Processing triggers for libc-bin (2.31-13+deb11u3) ...
Removing intermediate container 529c19c01047
---> 2a949eed9445
Step 3/9 : RUN pip install absl-py six protobuf wrapt gast astor termcolor keras_applications keras_preprocessing --no-deps
---> Running in a9c26bec4255
Collecting absl-py
Downloading absl_py-1.1.0-py3-none-any.whl (123 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.7/123.7 KB 2.8 MB/s eta 0:00:00
Collecting six
Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting protobuf
Downloading protobuf-4.21.1-py3-none-any.whl (291 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 291.6/291.6 KB 4.1 MB/s eta 0:00:00
Collecting wrapt
Downloading wrapt-1.14.1.tar.gz (50 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.9/50.9 KB 2.2 MB/s eta 0:00:00
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting gast
Downloading gast-0.5.3-py3-none-any.whl (19 kB)
Collecting astor
Downloading astor-0.8.1-py2.py3-none-any.whl (27 kB)
Collecting termcolor
Downloading termcolor-1.1.0.tar.gz (3.9 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting keras_applications
Downloading Keras_Applications-1.0.8-py3-none-any.whl (50 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.7/50.7 KB 2.2 MB/s eta 0:00:00
Collecting keras_preprocessing
Downloading Keras_Preprocessing-1.1.2-py2.py3-none-any.whl (42 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.6/42.6 KB 1.7 MB/s eta 0:00:00
Building wheels for collected packages: wrapt, termcolor
Building wheel for wrapt (setup.py): started
Building wheel for wrapt (setup.py): finished with status 'done'
Created wheel for wrapt: filename=wrapt-1.14.1-cp37-cp37m-linux_armv7l.whl size=21623 sha256=ebd5c2fc4b4105eef9d777fb4e83fbb484ef2b94c76212ccb45bc96ed53a9279
Stored in directory: /root/.cache/pip/wheels/57/50/d7/2b48d4ffe8aece4f4f6d518e8cd430360d42749dd7b24e3219
Building wheel for termcolor (setup.py): started
Building wheel for termcolor (setup.py): finished with status 'done'
Created wheel for termcolor: filename=termcolor-1.1.0-py3-none-any.whl size=4848 sha256=4445bd645a7972e38485fc8caed8f7dcff58e33b13e865901766fe6cd49a9511
Stored in directory: /root/.cache/pip/wheels/3f/e3/ec/8a8336ff196023622fbcb36de0c5a5c218cbb24111d1d4c7f2
Successfully built wrapt termcolor
Installing collected packages: termcolor, keras_preprocessing, keras_applications, wrapt, six, protobuf, gast, astor, absl-py
Successfully installed absl-py-1.1.0 astor-0.8.1 gast-0.5.3 keras_applications-1.0.8 keras_preprocessing-1.1.2 protobuf-4.21.1 six-1.16.0 termcolor-1.1.0 wrapt-1.14.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 22.1.2 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Removing intermediate container a9c26bec4255
---> 8c5eeb996147
Step 4/9 : RUN pip install numpy==1.16 tensorflow==1.13.1 --extra-index-url 'https://www.piwheels.org/simple' --no-deps
---> Running in d6d1e1e0d6e2
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting numpy==1.16
Downloading https://www.piwheels.org/simple/numpy/numpy-1.16.0-cp37-cp37m-linux_armv7l.whl (7.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.4/7.4 MB 2.5 MB/s eta 0:00:00
Collecting tensorflow==1.13.1
Downloading https://www.piwheels.org/simple/tensorflow/tensorflow-1.13.1-cp37-none-linux_armv7l.whl (93.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 93.2/93.2 MB 521.4 kB/s eta 0:00:00
Installing collected packages: tensorflow, numpy
Successfully installed numpy-1.16.0 tensorflow-1.13.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 22.1.2 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Removing intermediate container d6d1e1e0d6e2
---> 80254c549dff
Step 5/9 : RUN pip install flask pillow --index-url 'https://www.piwheels.org/simple'
---> Running in 677f4c5c5ab9
Looking in indexes: https://www.piwheels.org/simple
Collecting flask
Downloading https://www.piwheels.org/simple/flask/Flask-2.1.2-py3-none-any.whl (95 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 95.2/95.2 KB 477.6 kB/s eta 0:00:00
Collecting pillow
Downloading https://www.piwheels.org/simple/pillow/Pillow-9.1.1-cp37-cp37m-linux_armv7l.whl (806 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 806.2/806.2 KB 1.0 MB/s eta 0:00:00
Collecting Werkzeug>=2.0
Downloading https://www.piwheels.org/simple/werkzeug/Werkzeug-2.1.2-py3-none-any.whl (224 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 224.9/224.9 KB 1.2 MB/s eta 0:00:00
Collecting click>=8.0
Downloading https://www.piwheels.org/simple/click/click-8.1.3-py3-none-any.whl (96 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.6/96.6 KB 2.6 MB/s eta 0:00:00
Collecting importlib-metadata>=3.6.0
Downloading https://www.piwheels.org/simple/importlib-metadata/importlib_metadata-4.11.4-py3-none-any.whl (18 kB)
Collecting Jinja2>=3.0
Downloading https://www.piwheels.org/simple/jinja2/Jinja2-3.1.2-py3-none-any.whl (133 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 KB 551.9 kB/s eta 0:00:00
Collecting itsdangerous>=2.0
Downloading https://www.piwheels.org/simple/itsdangerous/itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Collecting zipp>=0.5
Downloading https://www.piwheels.org/simple/zipp/zipp-3.8.0-py3-none-any.whl (5.4 kB)
Collecting typing-extensions>=3.6.4
Downloading https://www.piwheels.org/simple/typing-extensions/typing_extensions-4.2.0-py3-none-any.whl (24 kB)
Collecting MarkupSafe>=2.0
Downloading https://www.piwheels.org/simple/markupsafe/MarkupSafe-2.1.1-cp37-cp37m-linux_armv7l.whl (26 kB)
Installing collected packages: zipp, Werkzeug, typing-extensions, pillow, MarkupSafe, itsdangerous, Jinja2, importlib-metadata, click, flask
Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.1 Werkzeug-2.1.2 click-8.1.3 flask-2.1.2 importlib-metadata-4.11.4 itsdangerous-2.1.2 pillow-9.1.1 typing-extensions-4.2.0 zipp-3.8.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 22.1.2 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Removing intermediate container 677f4c5c5ab9
---> 0144f898cb05
Step 6/9 : COPY app /app
---> ba5f39741e1b
Step 7/9 : EXPOSE 80
---> Running in b23dfc89710e
Removing intermediate container b23dfc89710e
---> 50e2662415e7
Step 8/9 : WORKDIR /app
---> Running in f72c7d634a6d
Removing intermediate container f72c7d634a6d
---> 60140c98ed5f
Step 9/9 : CMD python -u app.py
---> Running in 99e63ea1f9d2
Removing intermediate container 99e63ea1f9d2
---> 7aebef49c4ea
Successfully built 7aebef49c4ea
Successfully tagged classifier:1.0

</details>

Hi @jimbobbennett ,

I just got around to upgrading the Pi OS to Bullseye, and removed/recreated the necessary IoT Hub, etc. Unfortunately, things are still failing when I try and build the classifier docker container on my Mac. Here's what I get:

Martys-MacBook-Pro:883ca9b20d3f4d7b9c14913d3bc23b84.DockerFile.ARM marty$ docker build --platform linux/arm64 \
>                    -t crfruitqualitydetectormjh220811.azurecr.io/classifier:v1 .
[+] Building 131.4s (8/11)                                                                                                                                              
 => [internal] load build definition from Dockerfile                                                                                                               0.0s
 => => transferring dockerfile: 1.33kB                                                                                                                             0.0s
 => [internal] load .dockerignore                                                                                                                                  0.0s
 => => transferring context: 2B                                                                                                                                    0.0s
 => [internal] load metadata for docker.io/library/python:3.7-slim                                                                                                 1.1s
 => [internal] load build context                                                                                                                                  0.1s
 => => transferring context: 5.05MB                                                                                                                                0.1s
 => [1/7] FROM docker.io/library/python:3.7-slim@sha256:e057f87fc7115a39ea0db76f118592fe1b64e6cd249f7bd5d0c8f8d1e892f3a7                                           3.5s
 => => resolve docker.io/library/python:3.7-slim@sha256:e057f87fc7115a39ea0db76f118592fe1b64e6cd249f7bd5d0c8f8d1e892f3a7                                           0.0s
 => => sha256:4f265dd85ad2c299d8f9497946ee2e70e0e93a4455a724fc4864a4d407880324 10.76MB / 10.76MB                                                                   1.1s
 => => sha256:e057f87fc7115a39ea0db76f118592fe1b64e6cd249f7bd5d0c8f8d1e892f3a7 1.86kB / 1.86kB                                                                     0.0s
 => => sha256:04cb377c931fbe38b141a9b8cc1ebab4613d3c7349dc415d336d587f3cb8d14e 1.37kB / 1.37kB                                                                     0.0s
 => => sha256:47b9d83aea289639d34b54fb57916a95f1cbc9f7a93cc07881d2477846bddf98 8.19kB / 8.19kB                                                                     0.0s
 => => sha256:a9fe95647e78b5516c7e2327355b6996e2ea295cd76ae242cbfe87f016b4e760 30.05MB / 30.05MB                                                                   1.5s
 => => sha256:f101f90cc8f7640b7db5f7094941a1fe4ff28e11a968d3a36f146a89a480ecbb 1.06MB / 1.06MB                                                                     0.3s
 => => sha256:754254de9d9bcfc98d0c91dbe4e7d57a980d2df59d30099e4fad6623e15f0efb 233B / 233B                                                                         0.4s
 => => sha256:52fd822f97ad4c00b787ec4751e87c057603d3aa2d9a23d6ecac5e4f5900fb8e 2.96MB / 2.96MB                                                                     0.8s
 => => extracting sha256:a9fe95647e78b5516c7e2327355b6996e2ea295cd76ae242cbfe87f016b4e760                                                                          1.1s
 => => extracting sha256:f101f90cc8f7640b7db5f7094941a1fe4ff28e11a968d3a36f146a89a480ecbb                                                                          0.1s
 => => extracting sha256:4f265dd85ad2c299d8f9497946ee2e70e0e93a4455a724fc4864a4d407880324                                                                          0.4s
 => => extracting sha256:754254de9d9bcfc98d0c91dbe4e7d57a980d2df59d30099e4fad6623e15f0efb                                                                          0.0s
 => => extracting sha256:52fd822f97ad4c00b787ec4751e87c057603d3aa2d9a23d6ecac5e4f5900fb8e                                                                          0.2s
 => [2/7] RUN apt update && apt install -y libjpeg62-turbo libopenjp2-7 libtiff5 libatlas-base-dev libgl1-mesa-glx                                                62.9s
 => [3/7] RUN pip install absl-py six protobuf wrapt gast astor termcolor keras_applications keras_preprocessing --no-deps                                        40.1s 
 => ERROR [4/7] RUN pip install numpy==1.16 tensorflow==1.13.1 --extra-index-url 'https://www.piwheels.org/simple' --no-deps                                      23.7s 
------
 > [4/7] RUN pip install numpy==1.16 tensorflow==1.13.1 --extra-index-url 'https://www.piwheels.org/simple' --no-deps:
#7 5.757 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
#7 14.07 Collecting numpy==1.16
#7 14.31   Downloading numpy-1.16.0.zip (5.1 MB)
#7 14.98      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.1/5.1 MB 8.2 MB/s eta 0:00:00
#7 17.14   Preparing metadata (setup.py): started
#7 20.02   Preparing metadata (setup.py): finished with status 'done'
#7 23.04 ERROR: Could not find a version that satisfies the requirement tensorflow==1.13.1 (from versions: 2.10.0rc0)
#7 23.04 ERROR: No matching distribution found for tensorflow==1.13.1
#7 23.12 WARNING: You are using pip version 22.0.4; however, version 22.2.2 is available.
#7 23.12 You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
------
executor failed running [/bin/sh -c pip install numpy==1.16 tensorflow==1.13.1 --extra-index-url 'https://www.piwheels.org/simple' --no-deps]: exit code: 1
Martys-MacBook-Pro:883ca9b20d3f4d7b9c14913d3bc23b84.DockerFile.ARM marty$ 

In addition, I thought I would try to break apart the docker file and see what happens if I try to run the install line that includes tensorflow 1.13.1. I get the following error:

Martys-MacBook-Pro:883ca9b20d3f4d7b9c14913d3bc23b84.DockerFile.ARM marty$ pip install numpy==1.16 tensorflow==1.13.1 --extra-index-url 'https://www.piwheels.org/simple' --no-deps
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: numpy==1.16 in /Users/marty/Library/Python/3.8/lib/python/site-packages (1.16.0)
ERROR: Could not find a version that satisfies the requirement tensorflow==1.13.1 (from versions: 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.3.0, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.4.0, 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.6.0rc0, 2.6.0rc1, 2.6.0rc2, 2.6.0, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.7.0rc0, 2.7.0rc1, 2.7.0, 2.7.1, 2.7.2, 2.7.3, 2.8.0rc0, 2.8.0rc1, 2.8.0, 2.8.1, 2.8.2, 2.9.0rc0, 2.9.0rc1, 2.9.0rc2, 2.9.0, 2.9.1, 2.10.0rc0)
ERROR: No matching distribution found for tensorflow==1.13.1
Martys-MacBook-Pro:883ca9b20d3f4d7b9c14913d3bc23b84.DockerFile.ARM marty$ 

Looks like there is something that the docker build process does not like about tensorflow v1.13.1. Any thoughts?

The error reports:

" ERROR: No matching distribution found for tensorflow==1.13.1"

I have run into the same problem as well.

Hi @jimbobbennett ,

I just got around to upgrading the Pi OS to Bullseye, and removed/recreated the necessary IoT Hub, etc. Unfortunately, things are still failing when I try and build the classifier docker container on my Mac. Here's what I get:

Martys-MacBook-Pro:883ca9b20d3f4d7b9c14913d3bc23b84.DockerFile.ARM marty$ docker build --platform linux/arm64 \
>                    -t crfruitqualitydetectormjh220811.azurecr.io/classifier:v1 .
[+] Building 131.4s (8/11)                                                                                                                                              
 => [internal] load build definition from Dockerfile                                                                                                               0.0s
 => => transferring dockerfile: 1.33kB                                                                                                                             0.0s
 => [internal] load .dockerignore                                                                                                                                  0.0s
 => => transferring context: 2B                                                                                                                                    0.0s
 => [internal] load metadata for docker.io/library/python:3.7-slim                                                                                                 1.1s
 => [internal] load build context                                                                                                                                  0.1s
 => => transferring context: 5.05MB                                                                                                                                0.1s
 => [1/7] FROM docker.io/library/python:3.7-slim@sha256:e057f87fc7115a39ea0db76f118592fe1b64e6cd249f7bd5d0c8f8d1e892f3a7                                           3.5s
 => => resolve docker.io/library/python:3.7-slim@sha256:e057f87fc7115a39ea0db76f118592fe1b64e6cd249f7bd5d0c8f8d1e892f3a7                                           0.0s
 => => sha256:4f265dd85ad2c299d8f9497946ee2e70e0e93a4455a724fc4864a4d407880324 10.76MB / 10.76MB                                                                   1.1s
 => => sha256:e057f87fc7115a39ea0db76f118592fe1b64e6cd249f7bd5d0c8f8d1e892f3a7 1.86kB / 1.86kB                                                                     0.0s
 => => sha256:04cb377c931fbe38b141a9b8cc1ebab4613d3c7349dc415d336d587f3cb8d14e 1.37kB / 1.37kB                                                                     0.0s
 => => sha256:47b9d83aea289639d34b54fb57916a95f1cbc9f7a93cc07881d2477846bddf98 8.19kB / 8.19kB                                                                     0.0s
 => => sha256:a9fe95647e78b5516c7e2327355b6996e2ea295cd76ae242cbfe87f016b4e760 30.05MB / 30.05MB                                                                   1.5s
 => => sha256:f101f90cc8f7640b7db5f7094941a1fe4ff28e11a968d3a36f146a89a480ecbb 1.06MB / 1.06MB                                                                     0.3s
 => => sha256:754254de9d9bcfc98d0c91dbe4e7d57a980d2df59d30099e4fad6623e15f0efb 233B / 233B                                                                         0.4s
 => => sha256:52fd822f97ad4c00b787ec4751e87c057603d3aa2d9a23d6ecac5e4f5900fb8e 2.96MB / 2.96MB                                                                     0.8s
 => => extracting sha256:a9fe95647e78b5516c7e2327355b6996e2ea295cd76ae242cbfe87f016b4e760                                                                          1.1s
 => => extracting sha256:f101f90cc8f7640b7db5f7094941a1fe4ff28e11a968d3a36f146a89a480ecbb                                                                          0.1s
 => => extracting sha256:4f265dd85ad2c299d8f9497946ee2e70e0e93a4455a724fc4864a4d407880324                                                                          0.4s
 => => extracting sha256:754254de9d9bcfc98d0c91dbe4e7d57a980d2df59d30099e4fad6623e15f0efb                                                                          0.0s
 => => extracting sha256:52fd822f97ad4c00b787ec4751e87c057603d3aa2d9a23d6ecac5e4f5900fb8e                                                                          0.2s
 => [2/7] RUN apt update && apt install -y libjpeg62-turbo libopenjp2-7 libtiff5 libatlas-base-dev libgl1-mesa-glx                                                62.9s
 => [3/7] RUN pip install absl-py six protobuf wrapt gast astor termcolor keras_applications keras_preprocessing --no-deps                                        40.1s 
 => ERROR [4/7] RUN pip install numpy==1.16 tensorflow==1.13.1 --extra-index-url 'https://www.piwheels.org/simple' --no-deps                                      23.7s 
------
 > [4/7] RUN pip install numpy==1.16 tensorflow==1.13.1 --extra-index-url 'https://www.piwheels.org/simple' --no-deps:
#7 5.757 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
#7 14.07 Collecting numpy==1.16
#7 14.31   Downloading numpy-1.16.0.zip (5.1 MB)
#7 14.98      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.1/5.1 MB 8.2 MB/s eta 0:00:00
#7 17.14   Preparing metadata (setup.py): started
#7 20.02   Preparing metadata (setup.py): finished with status 'done'
#7 23.04 ERROR: Could not find a version that satisfies the requirement tensorflow==1.13.1 (from versions: 2.10.0rc0)
#7 23.04 ERROR: No matching distribution found for tensorflow==1.13.1
#7 23.12 WARNING: You are using pip version 22.0.4; however, version 22.2.2 is available.
#7 23.12 You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
------
executor failed running [/bin/sh -c pip install numpy==1.16 tensorflow==1.13.1 --extra-index-url 'https://www.piwheels.org/simple' --no-deps]: exit code: 1
Martys-MacBook-Pro:883ca9b20d3f4d7b9c14913d3bc23b84.DockerFile.ARM marty$ 

In addition, I thought I would try to break apart the docker file and see what happens if I try to run the install line that includes tensorflow 1.13.1. I get the following error:

Martys-MacBook-Pro:883ca9b20d3f4d7b9c14913d3bc23b84.DockerFile.ARM marty$ pip install numpy==1.16 tensorflow==1.13.1 --extra-index-url 'https://www.piwheels.org/simple' --no-deps
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: numpy==1.16 in /Users/marty/Library/Python/3.8/lib/python/site-packages (1.16.0)
ERROR: Could not find a version that satisfies the requirement tensorflow==1.13.1 (from versions: 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.3.0, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.4.0, 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.6.0rc0, 2.6.0rc1, 2.6.0rc2, 2.6.0, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.7.0rc0, 2.7.0rc1, 2.7.0, 2.7.1, 2.7.2, 2.7.3, 2.8.0rc0, 2.8.0rc1, 2.8.0, 2.8.1, 2.8.2, 2.9.0rc0, 2.9.0rc1, 2.9.0rc2, 2.9.0, 2.9.1, 2.10.0rc0)
ERROR: No matching distribution found for tensorflow==1.13.1
Martys-MacBook-Pro:883ca9b20d3f4d7b9c14913d3bc23b84.DockerFile.ARM marty$ 

Looks like there is something that the docker build process does not like about tensorflow v1.13.1. Any thoughts?

Apologies @marty-optum and @peterpanstechland - small typo when I updated the guide. The platform should be armhf, nor arm64.

docker build --platform linux/armhf -t <Container registry name>.azurecr.io/classifier:v1 .

The text has been corrected.