首页 > 解决方案 > Docker-compose Angular 应用程序 UnixHTTPConnectionPool(host='localhost', port=None):读取超时。(读取超时=200)

问题描述

我正在使用一个 docker-compose 环境,其中包含 2 个 Angular 应用程序,当我运行docker-compose up.

我尝试了所有修复,例如修改 COMPOSE_HTTP_TIMEOUT、重新启动 docker 服务,但没有任何反应。

我该如何解决这个问题?

这似乎是随机发生的。有时重新启动 docker 服务会解决此问题,但有时不会。

这是我的 docker-compose 文件:

version: '3'

services:
  # DB Django
  postgres:
    container_name: supv2_postgres
    image: infra_postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data

  # Real-time metrics retrieving database
  influxdb:
    container_name: supv2_influxdb
    image: infra_influxdb
    ports:
      - 8086:8086
    volumes:
      - /srv/docker/influxdb/data:/var/lib/influxdb
    environment:
      INFLUXDB_DB: metrics_collect
      INFLUXDB_ADMIN_USER: user
      INFLUXDB_ADMIN_PASSWORD: userpass
    restart: always

  prometheus:
    container_name: supv2_prometheus
    image: prom/prometheus
    user: root
    ports:
      - 9090:9090
    volumes:
      - ~/prometheus:/etc/prometheus/
      - ~/prometheus/prometheus_data:/prometheus

  report:
    image: report
    build: ./microservices/report
    container_name: report
    depends_on:
      - influxdb
    ports:
      - 5000:5000
  
  portal:
    container_name: axians_portal
    build: ../../axians-portal/web-portal
    image: frontend
    volumes:
     - ../../axians-portal/web-portal:/app
     - /app/node_modules
    ports:
     - 4201:4200

  supfrontend:
    container_name: supv2_frontend
    build: ~/frontend_supv2/ngx-admin
    image: supv2_frontend
    volumes:
      - ~/frontend_supv2/ngx-admin:/app
      - /app/node_modules
    ports:
      - 4301:4300

  #UI
  grafana:
    container_name: supv2_grafana
    image: infra_grafana
    depends_on:
      - influxdb
    ports:
      - 4000:3000
    volumes:
      - /srv/docker/grafana/data:/var/lib/grafana
    restart: always

  #Django orchestrator
  orchestrator:
    container_name: supv2_orchestrator
    image: infra_django
    build: ./Django
    depends_on:
      - postgres
    volumes:
      - ./microservices:/code/microservices
      - ./Django:/code
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 8000:8000

volumes:
  #persistent volume
  postgres_data:

标签: angulardocker

解决方案


您可以通过在同一个 docker-compose 中的两个不同服务中共享相同的 node_modules 来生成随机行为,您观察到的随机性可能来自它。

...
portal:
  container_name: axians_portal
  build: ../../axians-portal/web-portal
  image: frontend
  volumes:
   - ../../axians-portal/web-portal:/app
   - /app/node_modules   # <-- shared node_modules
  ports:
   - 4201:4200

supfrontend:
  container_name: supv2_frontend
  build: ~/frontend_supv2/ngx-admin
  image: supv2_frontend
  volumes:
    - ~/frontend_supv2/ngx-admin:/app
    - /app/node_modules  # <-- shared node_modules
  ports:
    - 4301:4300
...

尝试为 node_modues 设置两个不同的主机卷,我知道会占用更多的空间,但是在你没有随机行为之后,当两个进程尝试写入/读取/处理相同的文件时


推荐阅读