Skip to content

Instantly share code, notes, and snippets.

@salrashid123
Last active March 7, 2024 12:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save salrashid123/792bf7bc0e368dec66e3706db37ee1fc to your computer and use it in GitHub Desktop.
Save salrashid123/792bf7bc0e368dec66e3706db37ee1fc to your computer and use it in GitHub Desktop.
bazel_python
$ 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

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",
)


BUILD.bazel

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",
)


requirements.txt

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


main.py

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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment