【发布时间】:2022-01-03 18:44:22
【问题描述】:
我正在尝试构建一个具有在 requirements.txt 中指定的依赖关系的“hello, world”Docker 映像。考虑以下文件:
工作空间
workspace(name = "bazel01_helloworld")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_docker",
sha256 = "92779d3445e7bdc79b961030b996cb0c91820ade7ffa7edca69273f404b085d5",
strip_prefix = "rules_docker-0.20.0",
urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.20.0/rules_docker-v0.20.0.tar.gz"],
)
load("@io_bazel_rules_docker//toolchains/docker:toolchain.bzl",
docker_toolchain_configure="toolchain_configure"
)
load(
"@io_bazel_rules_docker//repositories:repositories.bzl",
container_repositories = "repositories",
)
container_repositories()
load(
"@io_bazel_rules_docker//python:image.bzl",
_py_image_repos = "repositories",
)
load("@rules_python//python:pip.bzl", "pip_install")
pip_install(
name = "my_deps",
requirements = "requirements.txt",
)
_py_image_repos()
构建
load("@io_bazel_rules_docker//python:image.bzl", "py_image")
py_image(
name = "helloWorld",
srcs = ["helloWorld.py"],
main = "helloWorld.py",
)
requirements.txt
flask
helloWorld.py
import flask
print('Hello, world!')
这是我得到的输出:
> sudo bazel run helloWorld
INFO: Analyzed target //:helloWorld (87 packages loaded, 7245 targets configured).
INFO: Found 1 target...
Target //:helloWorld up-to-date:
bazel-bin/helloWorld-layer.tar
INFO: Elapsed time: 5.390s, Critical Path: 2.41s
INFO: 58 processes: 20 internal, 38 linux-sandbox.
INFO: Build completed successfully, 58 total actions
INFO: Build completed successfully, 58 total actions
Loaded image ID: sha256:370d944e74b0d70ff857130e877235fb921b2b9e3cb4038ac88fe119d8843380
Tagging 370d944e74b0d70ff857130e877235fb921b2b9e3cb4038ac88fe119d8843380 as bazel:helloWorld
Traceback (most recent call last):
File "/app//helloWorld.binary.runfiles/bazel01_helloworld/helloWorld.py", line 1, in <module>
import flask
ImportError: No module named flask
Flask 显然没有安装。我做错了什么?
【问题讨论】: