node.js - docker中服务器和数据库之间的查询非常慢

标签 node.js postgresql docker

我正在尝试使用 docker compose 设置一些集成测试。我正在使用 docker compose 来启动 postgres 数据库和 nodejs 服务器。然后我使用 jest 对服务器运行 http 请求。
由于某些原因,我无法解释所有 SQL 查询(即使是最简单的查询)都非常慢(+ 1s)。
这听起来像是两个容器之间的通信问题,但我无法发现它。难道我做错了什么?
这是我的docker-compose.yml文件。服务器只是一个简单的 express 应用

version: "3.9"
services:
  database:
    image: postgres:12
    env_file: .env
    volumes:
      - ./db-data:/var/lib/postgresql/data
    healthcheck:
      test: pg_isready -U test_user -d test_database
      interval: 1s
      timeout: 10s
      retries: 3
      start_period: 0s
  server:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      database:
        condition: service_healthy
    env_file: .env
    environment:
      POSTGRES_HOST: database
      NODE_ENV: test
    init: true
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/healthcheck"]
      interval: 1s
      timeout: 10s
      retries: 3
      start_period: 0s
编辑
我正在使用
Docker version 20.10.2, build 2291f61
macOs BigSur 11.1 (20C69)

最佳答案

通过更改以下内容,尝试对数据文件夹使用 Volume 而不是 Bind Mount:

- ./db-data:/var/lib/postgresql/data
对此:
- db-data:/var/lib/postgresql/data
并将此部分添加到撰写文件的末尾:
volumes: 
    db-data:
您可以阅读有关绑定(bind)挂载与卷的更多信息 here

关于node.js - docker中服务器和数据库之间的查询非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65875996/

相关文章:

postgresql - windows 7下如何设置postgres用户

sql - PostgreSQL:将列提取到单独的表中并使用相关键更新其他列

docker - 如何验证我的 docker-compose.yml?

amazon-web-services - 如何将子域映射到使用AWS上的Elastic Bean Stack托管的多个Docker容器(作为Web服务器)

scala - 如何在sbt-build docker镜像中提升特权

node.js - 代理 Node 应用程序中的所有 Sentry 请求

javascript - 在 Node.js 中逐行异步处理文件

postgresql - 在 postgres 中可以从表动态构建 INSERT 脚本吗?

javascript - NodeJS错误: Cannot GET/from running the url on the web browser

javascript - 如何使用nodejs将数组obj写入文件