У меня есть сервис, использующий Puppeteer, который я пытаюсь построить с помощью Bazel. Сборка завершается успешно, но когда я запускаю сервис с Bazel, я получаю «изображение не найдено». Есть ли способ связать бинарный файл Chromium со сборкой или заставить образ установить необходимые зависимости?
Вот мой BUILD.bazel в проекте root.
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
load("@io_bazel_rules_docker//nodejs:image.bzl", "nodejs_image")
load("@io_bazel_rules_docker//docker:docker.bzl", "docker_push")
nodejs_binary(
name = "server",
data = [
"index.js",
"//services/html-export-service/config:files",
"//services/html-export-service/grpc-service:files",
"//services/html-export-service/helpers:files",
"//services/html-export-service/logger:files",
"//services/html-export-service/middleware:files",
"//services/html-export-service/writer:files",
"//services/html-export-service/uploader:files",
"//services/html-export-service/views:files",
"@html_exporter_npm//@google-cloud/storage",
"@html_exporter_npm//@grpc/proto-loader",
"@html_exporter_npm//express",
"@html_exporter_npm//grpc",
"@html_exporter_npm//puppeteer",
"@html_exporter_npm//winston",
],
entry_point = ":index.js",
)
nodejs_image(
name = "nodejs-image",
binary = ":server",
)
docker_push(
name = "docker-push",
image = ":nodejs-image",
registry = "<image-repo>",
repository = "<project>/<image-dir>/html-exporter",
tag = "0.1.0",
)
Вот соответствующие строки рабочего пространства:
workspace(
name = "<workspace_name>",
managed_directories = {
"@gql_api_gateway_npm": ["services/gql-api-gateway/node_modules"],
"@html_exporter_npm": ["services/html-export-service/node_modules"],
},
)
http_archive(
name = "build_bazel_rules_nodejs",
sha256 = "9473b207f1c5a61b603442cbfeeea8aaf2aa62870673fce2a1c52087f6ff4dc9",
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/1.2.4/rules_nodejs-1.2.4.tar.gz"],
)
load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install")
yarn_install(
name = "html_exporter_npm",
package_json = "//services/html-export-service:package.json",
yarn_lock = "//services/html-export-service:yarn.lock",
)
load(
"@io_bazel_rules_docker//nodejs:image.bzl",
_nodejs_image_repos = "repositories",
)
_nodejs_image_repos()