Postgresql Docker文件等待postgres容器

Postgresql Docker文件等待postgres容器,postgresql,docker,docker-compose,Postgresql,Docker,Docker Compose,您好,我的节点项目中出现以下错误: (节点:51)未处理的PromisejectionWarning:错误:getaddrinfo ENOTFOUND${DB_HOST} 我想问题是,当我的项目开始时,我的postgress还没有开始 所以我想不出一个解决方案,在我的postgres准备好之后如何启动我的容器,我读了一些关于Dockerze的文章,但我无法想象如何应用 我的docker文件: FROM node:lts-alpine RUN mkdir -p /home/node/api/no

您好,我的节点项目中出现以下错误:

(节点:51)未处理的PromisejectionWarning:错误:getaddrinfo ENOTFOUND${DB_HOST}

我想问题是,当我的项目开始时,我的postgress还没有开始 所以我想不出一个解决方案,在我的postgres准备好之后如何启动我的容器,我读了一些关于Dockerze的文章,但我无法想象如何应用

我的docker文件:

FROM node:lts-alpine

RUN mkdir -p /home/node/api/node_modules && chown -R node:node /home/node/api

WORKDIR /home/node/api

COPY ormconfig.json .env package.json yarn.* ./

USER node

RUN yarn

COPY --chown=node:node . .

EXPOSE 4000

CMD ["yarn", "dev"]
version: '3.7'

services:
  ci-api:
    build: .
    container_name: ci-api
    volumes:
      - .:/home/node/api
      - /home/node/api/node_modules
    ports:
      - '${SERVER_PORT}:${SERVER_PORT}'
    depends_on:
      - ci-postgres
    networks:
      - ci-network
  ci-postgres:
    image: postgres:12
    container_name: ci-postgres
    ports:
      - '${DB_PORT}:5432'
    environment:
      - ALLOW_EMPTY_PASSWORD=no
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASS}
      - POSTGRES_DB=${DB_NAME}
    volumes:
      - ci-postgres-data:/data
    networks:
      - ci-network

volumes:
  ci-postgres-data:

networks:
  ci-network:
    driver: bridge
我的码头工人作文:

FROM node:lts-alpine

RUN mkdir -p /home/node/api/node_modules && chown -R node:node /home/node/api

WORKDIR /home/node/api

COPY ormconfig.json .env package.json yarn.* ./

USER node

RUN yarn

COPY --chown=node:node . .

EXPOSE 4000

CMD ["yarn", "dev"]
version: '3.7'

services:
  ci-api:
    build: .
    container_name: ci-api
    volumes:
      - .:/home/node/api
      - /home/node/api/node_modules
    ports:
      - '${SERVER_PORT}:${SERVER_PORT}'
    depends_on:
      - ci-postgres
    networks:
      - ci-network
  ci-postgres:
    image: postgres:12
    container_name: ci-postgres
    ports:
      - '${DB_PORT}:5432'
    environment:
      - ALLOW_EMPTY_PASSWORD=no
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASS}
      - POSTGRES_DB=${DB_NAME}
    volumes:
      - ci-postgres-data:/data
    networks:
      - ci-network

volumes:
  ci-postgres-data:

networks:
  ci-network:
    driver: bridge
这是我的.env

SERVER_PORT=4000
DB_HOST=ci-postgres
DB_PORT=5432
DB_USER=spirit
DB_PASS=api
DB_NAME=emasa_ci

您可以参考下面的
docker compose.yml
,其中
依赖于
healthcheck
链接作为web服务依赖于db服务而添加

参考:


您可以参考下面的
docker compose.yml
,其中
依赖于
healthcheck
链接作为web服务依赖于db服务而添加

参考:


看这个解决方案:我很困惑,我是新来的docker,你能帮我吗?看这个解决方案:我很困惑,我是新来的docker,你能帮我吗?