arup-group/genet

Docker image does not build on Apple Silicon

mfitz opened this issue · 1 comments

mfitz commented

Although AWS CodeBuild builds our GeNet Docker image as normal in our CD pipeline, @KasiaKoz and I are both unable to build the Docker image on our local M1/M2 laptops. The failure looks like this:

docker build -t local-genet .

[+] Building 18.4s (7/8)
 => [internal] load build definition from Dockerfile                                                                                                                                     0.0s
 => => transferring dockerfile: 465B                                                                                                                                                     0.0s
 => [internal] load .dockerignore                                                                                                                                                        0.0s
 => => transferring context: 71B                                                                                                                                                         0.0s
 => [internal] load metadata for docker.io/mambaorg/micromamba:1.5.3-bullseye-slim                                                                                                       2.1s
 => [internal] load build context                                                                                                                                                        0.9s
 => => transferring context: 54.70MB                                                                                                                                                     0.9s
 => [1/4] FROM docker.io/mambaorg/micromamba:1.5.3-bullseye-slim@sha256:11b2d9547654b8658b640dcee8cf0b568aed0b3bef41421c5c7b2584ee6fb074                                                 4.3s
 => => resolve docker.io/mambaorg/micromamba:1.5.3-bullseye-slim@sha256:11b2d9547654b8658b640dcee8cf0b568aed0b3bef41421c5c7b2584ee6fb074                                                 0.0s
 => => sha256:fd5745bb03f9eb2c63daeba9640390ff8daca886a577907c64bdea2e2a706bdb 2.56kB / 2.56kB                                                                                           0.0s
 => => sha256:c8ae20330f21b702c571a04574b2f9ce9ef2ddb2f3bf1a81c1a7e0486d648985 6.30kB / 6.30kB                                                                                           0.0s
 => => sha256:ca426296fe928600d0b4b844aee43e2b70a05c6f4032de5f65dcc49f5cedfd82 30.06MB / 30.06MB                                                                                         1.6s
 => => sha256:61662ceafcee50e989e821b41998a0d5986684e010ee14cdbb3f5d59a6051b0e 6.86MB / 6.86MB                                                                                           1.3s
 => => sha256:11b2d9547654b8658b640dcee8cf0b568aed0b3bef41421c5c7b2584ee6fb074 2.36kB / 2.36kB                                                                                           0.0s
 => => sha256:c038bd8e28c9aa023d5de2bc3e76a41ebe044dbfa06748360cdb568d9d61d80d 115.22kB / 115.22kB                                                                                       0.6s
 => => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B                                                                                                 0.7s
 => => sha256:3e0f945f255be245b386c3ef618c26090ec26bdc4f0b2c2c2777d50cf1d9be38 520B / 520B                                                                                               1.6s
 => => sha256:32e5bfc8ef05cbd4f9506b6870eda5b45c0d7b8a6e2684432fd000815e446f11 284B / 284B                                                                                               1.8s
 => => sha256:2bf0e975df35f3925bf0f59edd44c66e390f249565fd09e90f9b67f09b8d1f72 22.66kB / 22.66kB                                                                                         2.0s
 => => sha256:267cd75647e257b9098a0fe56619a55c64b8a8f54a69883d4d51ddb75b370c0d 213B / 213B                                                                                               3.5s
 => => sha256:92f5d9afa28e24b33a4285ca22889de56a12fe370a93b4767103daf839122a98 683B / 683B                                                                                               2.4s
 => => extracting sha256:ca426296fe928600d0b4b844aee43e2b70a05c6f4032de5f65dcc49f5cedfd82                                                                                                1.6s
 => => sha256:60042355fb6f27c1edd82696815387955831be3352f2eb3102c77e706970079b 644B / 644B                                                                                               2.3s
 => => sha256:04abe5668e6835ae34481b3905e84c28b65fd7c1930d491302ba3520e57f94f2 344B / 344B                                                                                               2.6s
 => => extracting sha256:c038bd8e28c9aa023d5de2bc3e76a41ebe044dbfa06748360cdb568d9d61d80d                                                                                                0.0s
 => => extracting sha256:61662ceafcee50e989e821b41998a0d5986684e010ee14cdbb3f5d59a6051b0e                                                                                                0.1s
 => => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1                                                                                                0.0s
 => => extracting sha256:3e0f945f255be245b386c3ef618c26090ec26bdc4f0b2c2c2777d50cf1d9be38                                                                                                0.0s
 => => extracting sha256:32e5bfc8ef05cbd4f9506b6870eda5b45c0d7b8a6e2684432fd000815e446f11                                                                                                0.0s
 => => extracting sha256:2bf0e975df35f3925bf0f59edd44c66e390f249565fd09e90f9b67f09b8d1f72                                                                                                0.0s
 => => extracting sha256:267cd75647e257b9098a0fe56619a55c64b8a8f54a69883d4d51ddb75b370c0d                                                                                                0.0s
 => => extracting sha256:92f5d9afa28e24b33a4285ca22889de56a12fe370a93b4767103daf839122a98                                                                                                0.0s
 => => extracting sha256:60042355fb6f27c1edd82696815387955831be3352f2eb3102c77e706970079b                                                                                                0.0s
 => => extracting sha256:04abe5668e6835ae34481b3905e84c28b65fd7c1930d491302ba3520e57f94f2                                                                                                0.0s
 => [2/4] COPY --chown=mambauser:mambauser . ./src                                                                                                                                       1.0s
 => ERROR [3/4] RUN micromamba install -y -n base -c conda-forge -c city-modelling-lab python=3.11 "proj>=9.3" pip coin-or-cbc --file src/requirements/base.txt &&     micromamba clea  10.8s
------
 > [3/4] RUN micromamba install -y -n base -c conda-forge -c city-modelling-lab python=3.11 "proj>=9.3" pip coin-or-cbc --file src/requirements/base.txt &&     micromamba clean --all --yes:
#6 10.67 error    libmamba Could not solve for environment specs
#6 10.67     The following packages are incompatible
#6 10.67     ├─ osmium <3.7  does not exist (perhaps a typo or a missing channel);
#6 10.67     └─ pyomo >=6,<7  does not exist (perhaps a typo or a missing channel).
#6 10.75 critical libmamba Could not solve for environment specs
------
executor failed running [/usr/local/bin/_dockerfile_shell.sh micromamba install -y -n base -c conda-forge -c city-modelling-lab python=3.11 "proj>=9.3" pip coin-or-cbc --file src/requirements/base.txt &&     micromamba clean --all --yes]: exit code: 1

This is a problem of Apple Silicon devices using Linux with ARM architecture by default. Pyomo is one of the conda forge libraries without a Linux ARM64 version available. The easiest is to change the architecture used for the docker build (for instructions, see our internal docs here)