我有此错误:
(节点:51)UnhandledPromiseRejection警告:错误:getaddrinfo ENOTFOUND $ {DB_HOST}
然后我发现问题出在我的docker-compose 基本上postgres尚未初始化,所以我遇到了这个错误
我尝试使用以下命令:
command: ['./wait-for-it/wait-for-it.sh', 'db:5432', '--', 'yarn', 'dev']
但是我得到了这个错误:
api | internal/modules/cjs/loader.js:969
ci-api | throw err;
ci-api | ^
ci-api |
ci-api | Error: Cannot find module '/home/node/api/wait-for-it/wait-for-it.sh'
ci-api | at Function.Module._resolveFilename (internal/modules/cjs/loader.js:966:15)
ci-api | at Function.Module._load (internal/modules/cjs/loader.js:842:27)
ci-api | at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
ci-api | at internal/main/run_main_module.js:17:47 {
ci-api | code: 'MODULE_NOT_FOUND',
ci-api | requireStack: []
ci-api | }
我的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"]
我的docker-compose:
version: '3.7'
services:
db-pg:
image: postgres:12
container_name: db-pg
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
ci-api:
build: .
container_name: ci-api
volumes:
- .:/home/node/api
- /home/node/api/node_modules
ports:
- '${SERVER_PORT}:${SERVER_PORT}'
depends_on:
- db-pg
command: ['./wait-for-it/wait-for-it.sh', 'db:5432', '--', 'yarn', 'dev']
logging:
driver: 'json-file'
options:
max-size: '10m'
max-file: '5'
volumes:
ci-postgres-data:
我想知道如何解决这个问题
答案 0 :(得分:-1)
我从来没有遇到过这个问题,但是在我看来,您的环境变量$ {DB_HOST}设置不正确。如果您将所有内部文件与此docker-compose文件一起使用,则应将其连接到db-pg:5432