有没有一种方法可以将Python程序编译为二进制文件,并与Scratch Dockerfile一起使用?

大卫·弗里克

我最近一直在玩docker镜像。我看到了有关使用的docker文档FROM scratch我试图看看我可以把它带到多远的地方。我用python编程。医生说将示例C程序编译为二进制文件,将其复制到容器中,然后运行它。在容器中,我无法运行,python <program_file>.我看到了这个有关将python文件编译为二进制文件的堆栈交换信息,它符合我们在此处的测试用例。它提到了使用pyinstaller所以我在一个测试hello.py文件上运行它,它可以打印Hellopyinstaller hello.py我收到了很多有关构建项目的信息。好的。我可以通过运行“ dist / hello”在本地计算机上运行二进制文件(这是帖子中提到的二进制程序。因此,我编写了Dockerfile来复制并运行该程序。我的Dockerfile是

FROM scratch

ADD dist/hello /
CMD ["./hello"]

我跑步docker build . -t "hello:1.0",然后docker run hello:1.0.....我得到一个错误消息:

standard_init_linux.go:211: exec user process caused "no such file or directory"

是什么赋予了?我怎么了?是否有可能让pyinstaller编译一个二进制python项目(多个文件,而不只是这个文件),然后使用临时映像运行它。如果可能的话,有什么警告吗?

大卫·弗里克

因此,答案是使用Google的坚决形象。他们在github上有一个示例,我对其进行了如下稍微的编辑:

# Build a virtualenv using the appropriate Debian release
# * Install python3-venv for the built-in Python3 venv module (not installed by default)
# * Install gcc libpython3-dev to compile C Python modules
# * Update pip to support bdist_wheel
FROM debian:buster-slim AS build
RUN apt-get update && \
    apt-get install --no-install-suggests --no-install-recommends --yes python3-venv gcc libpython3-dev && \
    python3 -m venv /venv && \
    /venv/bin/pip install --upgrade pip

# Build the virtualenv as a separate step: Only re-execute this step when requirements.txt changes
FROM build AS build-venv
COPY requirements.txt /requirements.txt
RUN /venv/bin/pip install --disable-pip-version-check -r /requirements.txt

# Copy the virtualenv into a distroless image
FROM gcr.io/distroless/python3-debian10
COPY --from=build-venv /venv /venv
COPY . /app
WORKDIR /app
ENTRYPOINT ["/venv/bin/python3", "hello.py"]

如果有人想知道,只需发布​​此内容即可。绝对是一件很酷的事情。

链接到Google Distroless图片

影片对我有很大帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有一种方法,以原子用C在Linux上冲二进制信号++?

有没有一种方法可以将协议缓冲区编译为纯python代码?

有没有一种方法可以将Python代码“编译”到Arduino(Uno)上?

有没有一种方法可以在执行时向二进制文件添加/删除资源?

有没有一种方法可以将椭圆对象与intersects()函数一起使用?

有没有一种方法可以使用Gradle将Kotlin类编译为JavaScript?

有没有一种方法可以将以字符串表示的数字转换为等效的二进制数?

有没有一种方法可以通过二进制赋值来获得负数而不会产生overflowing_literals警告?

有没有一种方法可以将二进制数据转换成允许ActiveStorage将其作为映像附加到我的用户模型的数据类型

有没有一种方法可以在Linq中与order by子句一起使用?

有没有一种方法可以使用过期的证书对二进制文件进行签名?

有没有一种方法可以直接告诉我的python程序将鼠标与os.system(“ import filename.png”)一起使用?

有没有一种方法可以在ArCore人脸跟踪中将ViewRenderables与AugmentedFaceNodes一起使用?

有没有一种方法可以向LESS文件添加前缀而无需将其编译为CSS?

有没有一种方法可以将决策树与分类变量一起使用而无需一键编码?

有没有一种方法可以提示以二进制方式搜索元组?

有没有一种方法可以将Expo应用程序与Firebase动态链接集成在一起而不会分离?

有没有一种方法可以在不使用canvas API的情况下从图像文件获取二进制数据?

有没有一种方法可以将文本文件与android程序一起安装?

有没有一种方法可以将Java Collections与扩展的类类型一起使用?

有没有一种方法可以在编译时将二进制文件作为C中的const变量加载

有没有一种方法可以将presentShareDialogWithPhotoParams与初始文本一起使用?

是否有glibc生成的所有二进制文件的列表,并且有一种方法可以选择要构建的二进制文件?

有没有一种方法可以在运行时查找Eclipse编译的C二进制文件的大小?

有没有一种方法可以将字符串转换为D中的二进制

有没有一种方法可以将Lubuntu一起安装Unity或Gnome Shell?

有没有一种方法可以从管道执行本机二进制文件?

有没有一种实用的方法来制作二进制可复制的CPIO(initramfs)归档文件?

使用FROM无法撰写不与Dockerfile一起使用