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

Docker容器部署应用操作用户时遇404,疑Redis连接异常

问题:Docker容器化应用修改用户时出现404错误

我在基于多Docker容器构建的应用中修改用户时,访问 http://localhost:4200/NowCEDevelop/user/find/8bae6be6cd7e44288251983fe97767d4 出现404错误,怀疑是无法连接容器内的Redis数据库,但找不到具体问题点。

容器运行信息

CONTAINER ID   IMAGE                 COMMAND                  CREATED      STATUS         PORTS                                NAMES
ef575204dfc8   node:16.19-alpine     "node ./app/app.js -…"   2 days ago   Up 9 minutes   0.0.0.0:20000->13001/tcp             server-node-service-1
47efad61a584   redis:4.0.11-alpine   "docker-entrypoint.s…"   2 days ago   Up 9 minutes   6379/tcp, 0.0.0.0:20001->26379/tcp   server-node-redisdb-1

docker-compose.yml 配置

version: "2"
services:
  redisdb:
    #name: nowce-developdb
    image: redis:4.0.11-alpine
    volumes:
     - ../database/redis/provider/${PROVIDER_ID}:/data
    ports:
     - "${REDIS_PORT}:26379"
    restart: unless-stopped

  service:
    image: node:16.19-alpine
    #restart: always
    working_dir: /home/node
    entrypoint: "node ./app/app.js --env production"
    mem_limit: "300M"
    memswap_limit: "1G"
    ports:
     - "${APP_PORT}:13001"
    volumes:
     - .:/home/node # modified here to take into account the new app path
    # - ./logs:/home/app/logs
    user: node
    links:
     - redisdb
    restart: unless-stopped

    environment:
     - NODE_ENV=production
     - AES=false
     - SERVICE_ROUTE=develop
     - PROVIDER_ID=${PROVIDER_ID}
     - PROVIDER_SUBDOMAIN=${PROVIDER_SUBDOMAIN}
     - PROVIDER_SUBDOMAIN_SUFFIX=${PROVIDER_SUBDOMAIN_SUFFIX}
     - ADMIN_USERNAME=${ADMIN_USERNAME}
     - ADMIN_EMAIL=${ADMIN_EMAIL}
     - ADMIN_PASSWORD=${ADMIN_PASSWORD}
     - PROVIDER_APIKEY=${PROVIDER_APIKEY}
     - INSTITUTION_CODE=${INSTITUTION_CODE}
     - CANDIDATE_URL=${CANDIDATE_URL}
     - CONTRIBUTOR_URL=${CONTRIBUTOR_URL}

排查方向建议

  • 验证API路由映射:前端访问的是localhost:4200,但Node服务暴露在localhost:20000,检查前端是否配置了正确的代理规则,确保请求能转发到Node容器的20000端口。
  • 查看Node服务日志:进入Node容器查看请求日志,确认/NowCEDevelop/user/find/:id接口是否存在,或者请求是否真的到达服务端。执行命令:
    docker logs -f server-node-service-1
    
  • 测试Redis连接:进入Node容器,直接测试与Redis的连通性。执行命令:
    docker exec -it server-node-service-1 sh
    # 安装redis-cli(容器内默认无此工具)
    apk add redis-cli
    # 通过Docker内部域名连接Redis容器
    redis-cli -h redisdb -p 26379
    # 执行PING命令,正常应返回PONG
    PING
    
  • 核对环境变量与路由前缀:确认SERVICE_ROUTE=develop是否和前端请求的NowCEDevelop路径匹配,可能是路由前缀配置不一致导致接口找不到。
  • 检查Redis数据存在性:如果Redis连接正常,进一步检查该用户ID对应的键值是否存在,排除数据丢失的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:05:26