Bioconductor / bioconductor_docker

Docker Containers for Bioconductor
https://bioconductor.org/help/docker/
Artistic License 2.0
73 stars 31 forks source link

container defaults to installing packages from source, rather than binary #81

Closed mtmorgan closed 1 year ago

mtmorgan commented 1 year ago

For instance pulling today I have

root@8fc4afe31c40:/# env|grep BIOC
BIOCONDUCTOR_VERSION=3.17
BIOCONDUCTOR_USE_CONTAINER_REPOSITORY=FALSE
BIOCONDUCTOR_NAME=bioconductor_docker
BIOCONDUCTOR_DOCKER_VERSION=3.17.34

And the BIOCONDUCTOR_USE_CONTAINER_REPOSITORY=FALSE means that we don't use the binaries.

I guess it is that the three (??) times the environment variable is set, e.g., at https://github.com/Bioconductor/bioconductor_docker/blob/a9a324b078dc7dc5b5adb920cbd7db98ea86cb90/Dockerfile#L7 leaves it in the FALSE state, when really it should be TRUE

almahmoud commented 1 year ago

This is expected. It is defaulting to source because you are using the arm64 container, since you are running on an M1 mac. This is expected as binaries are not compatible with that container architecture, although we do have built binaries for the arm64 containers, they are not yet propagated. This is why they are failing after you turn them on. You can use --platform=linux/amd64 with your docker command to force the amd64 container if you want to use the binaries, but that might have performance implications in your compute time since would be running with an emulator. Please re-open if it seems wrong

mtmorgan commented 1 year ago

thanks for clarifying, and for building across architectures. To confirm, yes under --platform/amd64 the container is configured for binary installation, and the binaries work. Emulation is slow!