构建从python调用CGO的Docker容器

2024-09-30 06:13:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我的主要应用程序是python,我想在Docker容器中从python调用一些Go代码。通常我使用CGO和go build -buildmode=c-shared -o dllname.dll编译Go代码,并使用其他语言的代码。在python中,我可以使用ctypes模块和cdll.LoadLibrary(在windows上)运行dll

在我看来,这就是Dockerfile中的工作方式(我是Docker新手):

  1. 安装围棋
  2. 安装Go依赖项/库
  3. 安装合适的C编译器
  4. 将Go/Cgo源文件复制到容器中
  5. 使用CGO_ENABLED=1 go build -buildmode=c-shared将Go/Cgo代码编译成共享二进制文件
  6. 将python源文件复制到容器中
  7. 使用CMD分配python入口点

我做了很多徒劳的尝试来制作这样一个文件。这可行吗


Tags: 文件docker代码build应用程序go容器shared
1条回答
网友
1楼 · 发布于 2024-09-30 06:13:47

按照jakub的建议,使用golang:1.17.2-bullseye图像使其工作。这是Dockerfile:

FROM golang:1.17.2-bullseye as builder
WORKDIR /go/src/app
COPY ./lib/cgo .
RUN go get ./...
RUN CGO_ENABLED=1 go build -buildmode=c-shared -o cgolibname.so .

FROM python:3.9
WORKDIR /app
COPY ./appname .
COPY  from=builder /go/src/app/cgolibname.so .
CMD [ "python", "main.py" ]

相关问题 更多 >

    热门问题