$ bazel run :main
$ bazel run :server_image
$ docker run -ti localhost:4000/harness:server_image
Traceback (most recent call last):
File "/app//py_image.binary.runfiles/qs/main.py", line 8, in <module>
import tink
File "/app/py_image.binary.runfiles/my_deps_tink/site-packages/tink/__init__.py", line 16, in <module>
from tink import _json_proto_keyset_format as json_proto_keyset_format
File "/app/py_image.binary.runfiles/my_deps_tink/site-packages/tink/_json_proto_keyset_format.py", line 18, in <module>
from tink import _insecure_keyset_handle
File "/app/py_image.binary.runfiles/my_deps_tink/site-packages/tink/_insecure_keyset_handle.py", line 17, in <module>
from tink import _keyset_handle
File "/app/py_image.binary.runfiles/my_deps_tink/site-packages/tink/_keyset_handle.py", line 22, in <module>
from tink import _keyset_reader
File "/app/py_image.binary.runfiles/my_deps_tink/site-packages/tink/_keyset_reader.py", line 22, in <module>
from tink import core
File "/app/py_image.binary.runfiles/my_deps_tink/site-packages/tink/core/__init__.py", line 18, in <module>
from tink.core import _crypto_format
File "/app/py_image.binary.runfiles/my_deps_tink/site-packages/tink/core/_crypto_format.py", line 20, in <module>
from tink.core import _tink_error
File "/app/py_image.binary.runfiles/my_deps_tink/site-packages/tink/core/_tink_error.py", line 17, in <module>
from tink.cc.pybind import tink_bindings
ImportError: cannot import name 'tink_bindings' from 'tink.cc.pybind' (/app/py_image.binary.runfiles/my_deps_tink/site-packages/tink/cc/pybind/__init__.py)
workspace(name = "qs")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "c68bdc4fbec25de5b5493b8819cfc877c4ea299c0dcb15c244c5a00208cde311",
strip_prefix = "rules_python-0.31.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.31.0/rules_python-0.31.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
load("@rules_python//python:pip.bzl", "pip_parse")
pip_parse(
name = "my_deps",
requirements_lock = "//:requirements.txt",
)
load("@my_deps//:requirements.bzl", "install_deps")
install_deps()
# ---------------------------------
http_archive(
name = "io_bazel_rules_docker",
sha256 = "b1e80761a8a8243d03ebca8845e9cc1ba6c82ce7c5179ce2b295cd36f7e394bf",
urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.25.0/rules_docker-v0.25.0.tar.gz"],
)
load(
"@io_bazel_rules_docker//repositories:repositories.bzl",
container_repositories = "repositories",
)
container_repositories()
load("@io_bazel_rules_docker//repositories:deps.bzl", container_deps = "deps")
container_deps()
load("@io_bazel_rules_docker//python3:image.bzl", _py_image_repos = "repositories")
_py_image_repos()
load("@io_bazel_rules_docker//container:pull.bzl", "container_pull")
container_pull(
name = "distroless_python3",
# nonroot-amd64
digest = "sha256:06fd54a776cb38ee6f71f01c799f7388b8ed96333ad81dd2a8fdd648a895ff79",
registry = "gcr.io",
repository = "distroless/python3-debian12",
)
load("@rules_python//python:defs.bzl", "py_binary")
load("@io_bazel_rules_docker//python3:image.bzl", "py3_image")
load("@io_bazel_rules_docker//container:container.bzl", "container_image", "container_push")
load("@my_deps//:requirements.bzl", "requirement")
LIBS = [
requirement("flask"),
requirement("waitress"),
requirement("google-cloud-storage"),
requirement("tink"),
requirement("tensorflow"),
]
py3_image(
name="py_image",
srcs=[
":main"
],
main="main.py",
deps = LIBS,
base = "@distroless_python3//image",
)
py_binary(
name = "main",
srcs = ["main.py"],
deps = LIBS,
)
container_image(
name = "server_image",
base = ":py_image",
ports = ["8080"],
repository = "localhost:4000/harness",
)
container_push(
name = "push_image",
image = ":server_image",
format = "Docker",
registry = "localhost:4000",
repository = "harness",
tag = "server_image",
)
absl-py==2.1.0
astunparse==1.6.3
blinker==1.7.0
cachetools==5.3.3
certifi==2024.2.2
charset-normalizer==3.3.2
click==8.1.7
Flask==2.2.3
waitress==2.1.2
importlib-metadata==4.12.0
zipp==1.0.0
more-itertools==8.10.0
requests==2.28.2
Jinja2==3.1.2
itsdangerous==2.1.2
Werkzeug==2.2.3
# click==8.1.3
click==8.1.7
MarkupSafe==2.1.2
urllib3==1.26.15
#certifi==2022.12.7
certifi==2024.2.2
#idna==3.4
idna==3.6
pipreqs==0.4.11
yarg==0.1.9
#charset-normalizer==3.1.0
charset-normalizer==3.3.2
docopt==0.6.2
flatbuffers==23.5.26
# gast==0.5.4
gast==0.4.0
setuptools==69.1.1
wheel==0.42.0
google-api-core==2.17.1
google-auth==2.28.1
# google-auth-oauthlib==1.2.0
google-auth-oauthlib==1.0.0
google-cloud-core==2.4.1
#google-cloud-kms==2.21.2
google-cloud-kms==2.19.2
google-cloud-storage==2.15.0
google-crc32c==1.5.0
google-pasta==0.2.0
google-resumable-media==2.7.0
googleapis-common-protos==1.62.0
grpc-google-iam-v1==0.13.0
grpcio==1.62.0
grpcio-status==1.62.0
h5py==3.10.0
idna==3.6
itsdangerous==2.1.2
#Jinja2==3.1.3
Jinja2==3.1.2
# keras==2.15.0
keras==2.13.1
libclang==16.0.6
Markdown==3.5.2
# MarkupSafe==2.1.5
MarkupSafe==2.1.2
ml-dtypes==0.2.0
# numpy==1.26.4
numpy==1.24.3
oauthlib==3.2.2
opt-einsum==3.3.0
packaging==23.2
proto-plus==1.23.0
protobuf==4.25.3
pyasn1==0.5.1
pyasn1-modules==0.3.0
# requests==2.31.0
requests==2.28.2
requests-oauthlib==1.3.1
rsa==4.9
six==1.16.0
# tensorboard==2.15.2
tensorboard==2.13.0
tensorboard-data-server==0.7.2
# tensorflow==2.15.0.post1
tensorflow==2.13.1
# tensorflow-estimator==2.15.0
tensorflow-estimator==2.13.0
# tensorflow-io-gcs-filesystem==0.36.0
tensorflow-io-gcs-filesystem==0.34.0
termcolor==2.4.0
tink==1.9.0
tink[gcpkms]==1.9.0
# typing_extensions==4.10.0
typing_extensions==4.5.0
# urllib3==2.2.1
urllib3==1.26.15
# Werkzeug==3.0.1
# Werkzeug==2.2.2
Werkzeug==2.2.3
wrapt==1.14.1
from flask import Flask, render_template, request, abort, send_from_directory, jsonify
from google.cloud import storage
import io
import base64
import time, logging, threading
import tink
from tink import aead
from tink import tink_config
from tink.integration import gcpkms
from tink import streaming_aead
from typing import BinaryIO
import tarfile
import tensorflow as tf
from waitress import serve
app = Flask(__name__)
if __name__ == '__main__':
print(tf.version.VERSION)
serve(app, host="0.0.0.0", port=8080)