You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下Kettle容器API路径http://kettletdf:8000/etl/v1/eph/enriched/listar 疑问

关于API路径http://kettletdf:8000/etl/v1/eph/enriched/listar的来源分析

我了解Docker/ETL/Pentaho相关概念,但对路径http://kettletdf:8000/etl/v1/eph/enriched/listar存在疑惑:已知kettletdf是容器名称,但/etl/v1/eph/enriched/listar并非本地文件夹。该请求来自以下Python代码:

response = requests.get(etl_baseurl + etl_version + etl_fuente + folder + "/listar", timeout=settings.REQUEST_EPH_TIMEOUT)
data = response.json()

对应的Docker Compose配置如下:

services:
  kettletdf:
    build:
      context: ../../
      dockerfile: etl/kettle/Dockerfile
      args:
        GIT_BRANCH: ${GIT_BRANCH}
        GIT_USER: ${GIT_USER}
        GIT_PASS: ${GIT_PASS}
        GIT_REPO: ${GIT_REPO}

    env_file:
      - .env
    stdin_open: true
    tty: true
    container_name: kettletdf
    #ports:
      #- "${KETTLE_PORT}:8000"
    environment:
      - POSTGRES_HOST=${POSTGRES_HOST}
      - POSTGRES_PORT=${POSTGRES_PORT}
      - POSTGRES_NAME=${POSTGRES_NAME}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - CSV_VOLUME_FULLPATH=${CSV_VOLUME_FULLPATH}
    volumes:
      #AGREGAR RUTAS DE ARCHVISPOS FAÑLTANTES (ETC/SALUD/ORIGINFILES ... COMERCIO ,....ETC)
      - /var/run/docker.sock:/var/run/docker.sock
      - ../eph/eph_csv_origin_file:/opt/tdf/volumes/eph_csv_origin_file/
      - ../eph/eph_csv_master_file:/opt/tdf/volumes/eph_csv_master_file/
      - ../eph/eph_csv_enriched_file:/opt/tdf/volumes/eph_csv_enriched_file/
      - ../eph/eph_csv_cuadros_resultado:/opt/tdf/volumes/eph_csv_cuadros_resultado/
      - ../eph/sintaxis_r_resultado:/opt/tdf/volumes/sintaxis_r_resultado/
      - ../eph/sintaxis_r_resultado:/opt/tdf/datalaketdf/etl/eph/sintaxis_r_resultado/
      # Queda comentado para que no pise los scripts dentro de eph
        #- ../eph/:/opt/tdf/datalaketdf/etl/eph/
      - ../eph/bdd/scripts/:/opt/tdf/volumes/scripts/
      - ../salud/:/opt/tdf/datalaketdf/etl/salud/
      - ../salud/bdd/scripts/:/opt/tdf/volumes/salud_scripts/
      # Actualizar cada vez que se quiera agregar / quitar una carpta dentro de KETTER
      - /opt/tdf/volumes/salud_archivos/xls_origin_file
      - /opt/tdf/volumes/comercio_exterior/origen
      - /opt/tdf/volumes/comercio_exterior/nomencladores
      # Actualizar cada vez que se quiera agregar / quitar una carpta dentro de KETTER

      # Queda comentado por que saca el codigo del repo en git
      #- ../api:/opt/tdf/datalaketdf/etl/api
    networks:
      - datalaketdf
networks:
   datalaketdf:
     external: true

路径来源分析

  1. 这是HTTP API路由而非文件路径:/etl/v1/eph/enriched/listar不是本地文件夹路径,而是kettletdf容器内运行的Web服务定义的API端点,从代码中response.json()可以看出,该端点用于返回JSON格式的数据。

  2. 服务的部署来源:

    • 从Docker Compose的build配置可知,kettletdf容器基于../../目录下的etl/kettle/Dockerfile构建,构建过程会通过GIT_REPO等参数从指定Git仓库拉取代码。
    • 被注释的../api:/opt/tdf/datalaketdf/etl/api卷映射提示,API代码可能原本存放在本地../api目录,或是从Git仓库拉取到容器内的/opt/tdf/datalaketdf/etl/api路径下,这个API服务会监听容器的8000端口,处理/etl/v1/eph/enriched/listar这类路由请求。
  3. 路由的定义位置:

    • 你需要查看构建时拉取的Git仓库代码,或是原本的../api目录中的代码(如果未注释卷映射的话),找到Web服务的路由配置文件。这类路由通常在Flask、FastAPI等API框架的代码中定义,对应处理listar(西班牙语“列表”)的逻辑,大概率是返回eph模块下enriched相关的文件列表或数据记录。
  4. 容器网络访问逻辑:

    • 因为kettletdf和发起请求的Python服务都在datalaketdf这个外部Docker网络中,所以可以直接通过容器名称kettletdf访问其8000端口,无需映射宿主机端口(Docker Compose中端口映射被注释,但容器内部服务仍在8000端口运行)。

内容的提问来源于stack exchange,提问作者nepko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 03:15:23