docker-compose up 时出现“dub:找不到命令”

问题描述 投票:0回答:1

基本上,我想要创建一个首先执行 Zookeeper 和 kafka 服务器的 Ubuntu 环境。

首先,我创建了一个 dockerfile,在其中定义 Ubuntu 环境:

FROM ubuntu:latest
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y openjdk-8-jdk
RUN apt-get install -y sudo
RUN apt-get install -y dub
RUN apt-get install -y wget rsync

RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo

RUN wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
RUN tar -xvf kafka_2.13-3.7.0.tgz
RUN mkdir -p /home/servidor-kafka/kafka
RUN rsync -av --remove-source-files kafka_2.13-3.7.0/ /home/servidor-kafka/kafka/
RUN rm kafka_2.13-3.7.0.tgz

RUN wget https://downloads.apache.org/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz
RUN tar -xvf apache-zookeeper-3.7.2-bin.tar.gz
RUN mkdir -p /home/servidor-kafka/zookeeper
RUN rsync -av --remove-source-files apache-zookeeper-3.7.2-bin/ /home/servidor-kafka/zookeeper/
RUN rm apache-zookeeper-3.7.2-bin.tar.gz

WORKDIR /home/servidor-kafka/kafka

EXPOSE 9092 2181
USER docker

CMD ["/bin/bash"]

然后我创建我的 docker-compose.yml,如下所示:

version: '3.8'

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    container_name: zookeeper
    user: "1000:1000"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 500
    ports:
      - 2181:2181
    volumes:
      - /home/servidor-kafka/zookeeper

  kafka-broker-1:
    image: confluentinc/cp-kafka:latest
    container_name: kafka-broker-1
    depends_on:
      - zookeeper
    user: "1000:1000"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://broker:29092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
    ports:
      - "9092:9092"
    volumes:
      - /home/servidor-kafka/kafka

当我 docker 构建它时,我没有遇到任何问题,但是当我执行“docker-compose up”时,我得到:

/etc/confluent/docker/configure: line 40: dub: command not found

这很奇怪,因为我已经在 dockerfile 中

RUN apt-get install -y dub
了。

运行zookeeper和kafka时。

我可以获得一些反馈吗?谢谢你。

linux docker ubuntu docker-compose dockerfile
1个回答
0
投票

我减少了您

RUN
Dockerfile
语句的数量。这应该会给你一个层数更少的图像。

FROM ubuntu:latest

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y openjdk-8-jdk dub wget rsync

RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo

RUN wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz && \
    tar -xvf kafka_2.13-3.7.0.tgz && \
    mkdir -p /home/servidor-kafka/kafka && \
    rsync -av --remove-source-files kafka_2.13-3.7.0/ /home/servidor-kafka/kafka/ && \
    rm kafka_2.13-3.7.0.tgz

RUN wget https://downloads.apache.org/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz && \
    tar -xvf apache-zookeeper-3.7.2-bin.tar.gz && \
    mkdir -p /home/servidor-kafka/zookeeper && \
    rsync -av --remove-source-files apache-zookeeper-3.7.2-bin/ /home/servidor-kafka/zookeeper/ && \
    rm apache-zookeeper-3.7.2-bin.tar.gz

WORKDIR /home/servidor-kafka/kafka

EXPOSE 9092 2181
USER docker

CMD ["/bin/bash"]

但这并不能解决你的问题。正如 David Maze 在评论中指出的那样,您的

docker-compose.yml
文件没有引用
Dockerfile
,因此使用
docker-compose up
,您实际上只是运行那里提到的两个预构建图像。

您是否计划使用

Dockerfile
运行其他服务?或者您打算使用
Dockerfile
来替换其中一项或两项服务?

也不清楚

dub
正在哪里运行。我使用上面更新的
Dockerfile
构建了图像并运行
dub
正常(它确实抱怨没有找到包清单,但找到了实际的
dub
命令!)。

您需要提供更多信息,以便我们重现您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.