Kafka-connect docker 以 appuser 身份构建的图像 - 如何以 root 身份构建它?

Kafka-connect docker image built as appuser - how to build it as root?

我正在尝试在 Docker 中构建 Kafka-Connect 映像:

FROM confluentinc/cp-kafka-connect

RUN confluent-hub install --no-prompt wepay/kafka-connect-bigquery:1.6.1
RUN confluent-hub install --no-prompt confluentinc/connect-transforms:latest

RUN mkdir -p /usr/share/landoop-plugins
COPY kafka-connect-redis-1.2.2-2.1.0-all.jar /usr/share/landoop-plugins/

但它运行为 appuser

Step 4/4 : RUN id
 ---> Running in d2094f6336a7
uid=1000(appuser) gid=1000(appuser) groups=1000(appuser)

所以如果我想举个例子

RUN mkdir -p /usr/share/landoop-plugins

它因 root 权限而停止:

mkdir: cannot create directory '/usr/share/landoop-plugins': Permission denied
The command '/bin/sh -c mkdir -p /usr/share/landoop-plugins' returned a non-zero code: 1

我可以在 Docker 文件的开头添加 USER root:

Step 3/15 : RUN id
 ---> Running in 6255e2e7ff81
uid=0(root) gid=0(root) groups=0(root)

但是如果我 运行 容器,我将被记录为 appuser,这会导致权限问题: [appuser@connect ~]$.

实际上,在源图像中 confluentinc/cp-kafka-connect:6.0.0 有一层 USER appuser 所以我的问题是如何将我的图像构建为 root 然后以 root 登录并且不使用 appuser 用户。我试过了 USER root 没有帮助。

它是否与团体有某种联系?

groups
gignac sudo docker

我也试过docker buildsudo docker build

当我需要为 Kafka Connect 创建自己的插件时,我会做类似的事情,但我并不是以 root 用户身份进行的。 简单地说,我把我的罐子放在我有权写的地方,然后配置插件环境设置

像这样:

FROM    confluentinc/cp-kafka-connect:5.5.2

ENV     CONNECT_PLUGIN_PATH='/usr/share/java,/usr/share/confluent-hub-components'

COPY    converter/* /usr/share/java/kafka-serde-tools/
COPY    format/* /usr/share/java/kafka-connect-storage-common/

这样不行吗?

为了安装包和故障排除,我们需要 root 用户。使用版本 5.5.3 可以实现不创建 APPUSER 并且默认加载 root 的技巧。 版本可以通过

验证
http://localhost:8083/connectors

其中提供版本详细信息。