Bazel устанавливает пакет через cmd как часть файла сборки

#mongodb #bazel #mongodump #bazel-rules

#mongodb #bazel #mongodump #bazel-правила

Вопрос:

У меня есть служба python, которая выполняет команды оболочки mongodump / mongorestore для архивирования некоторых данных mongodb, и, следовательно, эти команды должны быть доступны в образе docker.

К сожалению, я не могу добавить эти пакеты в образ docker (под управлением centos 7), поскольку он используется несколькими службами.

Сможет ли bazel добавить необходимые зависимости как часть файла сборки? Я попробовал следующее:

 genrule(
    name = "install_mongodb_tools",
    outs = [
        "mongodb-database-tools-ubuntu2004-x86_64-100.5.1.tar",
    ],
    cmd = "sudo wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2004-x86_64-100.5.1.tgz amp;amp;  "  
    "sudo tar -zxv mongodb-database-tools-ubuntu2004-x86_64-100.5.1.tgz amp;amp;  "  
    "sudo cp mongodb-database-tools-ubuntu2004-x86_64-100.5.1 /usr/local/bin/",
)

container_image(
    name = "service_image",
    base = "@xxxx//image",
    directory = "/opt",
    entrypoint = "/bin/sh",
    tags = [
        "manual",
    ],
    tars = [
        ":install_mongodb_tools",
    ],
)
 

Комментарии:

1. Рассматривали ли вы возможность использования http_archive вместо genrule ? См. [ docs.bazel.build/versions/main/repo/http.html ] . Не очень помогает с частями изображения docker, но, возможно, это шаг в правильном направлении.