当前位置: 首页 > 面试题库 >

在Linux上使用confluent-kafka-go构建Go应用程序

翟奇逸
2023-03-14
问题内容

我正在尝试使用我的go应用程序创建一个docker映像。该应用程序(在MacOS上开发)取决于confluent-kafka- go哪个,而又取决于librdkafka-dev我在Docker映像中安装的对象,如下所示:

FROM golang:1.1
RUN apt-get update
RUN apt-get -y install librdkafka-dev

VOLUME /workspace
WORKDIR /workspace/src/my/app/folder
ENTRYPOINT ["/bin/sh", "-c"]

我收到以下错误:

我/app/folder/vendor/github.com/confluentinc/confluent-kafka-go/kafka
../folder/vendor/github.com/confluentinc/confluent-kafka-
go/kafka/00version.go:44:2:错误:#error“ confluent-kafka-go需要librdkafka
v0.11.5或更高版本。从Confluent存储库中安装最新版本的librdkafka,请参阅http://docs.confluent.io/current/installation.html


据我了解, 安装最新版本。我该如何解决?


问题答案:

几周前我也遇到过类似的问题。IIRC confluent-kafka-go需要最新版本的librdkafka- dev,但尚未发布给高山或其他人。虽然我能够为ubuntu找到它,所以我的解决方案(它比我期望的要复杂得多,但它确实有效)是从干净的ubuntu开始,安装librdkafka- dev,安装我想要的Go版本并在docker中编译

外观如下:

FROM ubuntu

# Install the C lib for kafka
RUN apt-get update
RUN apt-get install -y --no-install-recommends apt-utils wget gnupg software-properties-common
RUN apt-get install -y apt-transport-https ca-certificates
RUN wget -qO - https://packages.confluent.io/deb/5.1/archive.key | apt-key add -
RUN add-apt-repository "deb [arch=amd64] https://packages.confluent.io/deb/5.1 stable main"
RUN apt-get update
RUN apt-get install -y librdkafka-dev

# Install Go
RUN add-apt-repository ppa:longsleep/golang-backports
RUN apt-get update
RUN apt-get install -y golang-1.11-go

# build the library
WORKDIR /go/src/gitlab.appsflyer.com/rantav/kafka-mirror-tester
COPY *.go ./
COPY // the rest of your go files. You may copy recursive if you want
COPY vendor vendor

RUN GOPATH=/go GOOS=linux /usr/lib/go-1.11/bin/go build -a -o main .

EXPOSE 8000

ENTRYPOINT ["./main"]


 类似资料:
  • 我正在尝试在docker文件上构建我的go应用程序。在我的内心深处。mod有一个需要身份验证/ssh的私有包。这个问题类似于在Docker中使用私有模块构建Go应用程序,但在我的情况下,我必须从而不是中提取包。这是我的dockerfile: 我试图按照这个教程https://divan.dev/posts/go_get_private/,通过更改到仍然失败。 以下是错误详细信息: 这里有人知道如何

  • 问题内容: 有没有一种方法可以在Windows下针对Go v1.7生成dll? 我尝试了经典 但是得到 Windows / amd64不支持-buildmode = shared 更新 好的,我知道了。对于那些感兴趣的人:https : //groups.google.com/forum/#!topic/golang- dev/ckFZAZbnjzU 问题答案: 从Go 1.10开始,Window

  • 问题内容: 有没有办法在IIS上运行Go Web应用程序? 我找到了azure的设置,但是它在我的开发机器上不起作用, 这是azure的网络配置: 问题答案: 您的本地IIS无法正常运行,因为您需要安装一个名为HttpPlatformHandler模​​块的单独组件, https://azure.microsoft.com/zh-CN/blog/announcing-the-release-of-

  • 问题内容: 我需要为每种构建类型创建构建器(基础)和特定的构建器。 …。 主要功能如下: File:Builder.go 接口 文件:nodebuilder.go 主要假设/过程: 要开始在每个模块上构建,我需要获取它的路径 我需要将模块复制到临时文件夹 我需要在其上运行构建(实现构建界面,如此类 ) 构建完成后,用dep压缩模块 将其复制到新的目标文件夹 注意:除了和之后(应专门处理),所有其他

  • 问题内容: 我的Dockerfile位于文件夹的根目录中,包含在主包中。 看起来如下: 我收到以下错误: 我究竟做错了什么?码头工人完成后可以登录命令吗? 问题答案: 您正在将所有文件复制到Image根目录,未安装任何依赖项,尝试构建它,然后从运行二进制文件。该目录中不存在二进制文件,并且正在生成错误。 我建议使用这样的Dockerfile, 这将执行以下操作。 将项目文件复制到。 将工作目录设置

  • 问题内容: 我已遵循Go网站上的“ 编写Web应用程序”教程,并且开始编写自己的Web应用程序。我还阅读了《如何编写Go代码》的开始,并尝试使用相同的工作区结构来组织我的代码。 我正在编写一个名为mygosite的简单Web应用程序,该应用程序通过呈现单个模板来处理所有请求。运行之后,我的目录结构现在看起来像这样: 在我的代码中,我指的是带有path的模板。运行时,应用程序找不到源模板,因为它位于