Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run Bazel container images on OSX?

Tags:

bazel

According to the documentation at bazelbuild/rules_docker, it should be possible to work with these container images on OSX, and it also claims that it's possible to do so without docker.

These rules do not require / use Docker for pulling, building, or pushing images. This means:

They can be used to develop Docker containers on Windows / OSX without boot2docker or docker-machine installed.
They do not require root access on your workstation.

How do I do that? Here's a simple rule:

go_image(
    name = "helloworld_image",
    importpath = "github.com/nictuku/helloworld",
    library = ":go_default_library",
    visibility = ["//visibility:public"],
)

I can build the image with bazel build :helloworld_image. It produces a tar ball in blaze-bin, but it won't run it:

INFO: Running command line: bazel-bin/helloworld_image
Loaded image ID: sha256:08d312b529d30431c68741fd3a31468a02533f27a8c2c29eedc969dae5a39852
Tagging 08d312b529d30431c68741fd3a31468a02533f27a8c2c29eedc969dae5a39852 as bazel:helloworld_image
standard_init_linux.go:185: exec user process caused "exec format error"
ERROR: Non-zero return code '1' from command: Process exited with status 1.

It's trying to run the linux this is OSX, which is silly.

I also tried doing a "docker load" on the .tar content but it doesn't seem to like that format.

$ docker load -i bazel-bin/helloworld_image-layer.tar
open /var/lib/docker/tmp/docker-import-330829602/app/json: no such file or directory

Help? Thanks!

like image 745
Yves Junqueira Avatar asked Nov 29 '25 20:11

Yves Junqueira


1 Answers

You are building for your host platform by default so you need to build for the container platform if you want to do that.

Since you are using a go binary, you can do cross compilation by specifying --cpu=k8 on the command line. Ideally we would be able to just say that the docker image needs a linux binary (so no need to specify the --cpu command-line flag) but this is still a work in progress in Bazel.

like image 77
Damien Martin-Guillerez Avatar answered Dec 01 '25 14:12

Damien Martin-Guillerez



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!