node.js - Docker 撰写错误以将 postgres 数据库与 Node API 连接
问题描述
当我尝试通过 Node.js 中的 API 访问 postgres 数据库时,我遇到了与 docker-composer 的连接错误。
我使用 Sequelize 作为 ORM 来访问数据库。但我不知道发生了什么。
码头工人-compose.yml:
version: '3.5'
services:
api-service:
build:
context: .
dockerfile: ./api-docker.dockerfile
image: api-service
container_name: api-service
restart: always
env_file: .env
environment:
- NODE_ENV=$NODE_ENV
ports:
- ${PORT}:3000
volumes:
- .:/home/node/api
- node_modules:/home/node/api/node_modules
depends_on:
- postgres-db
networks:
- api-network
command: npm run start:dev
postgres-db:
expose:
- ${PORT_SERVICE}
ports:
- ${PORT_SERVICE}:5432
restart: always
env_file: .env
volumes:
- pgReportData:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${USER_SERVICE}
POSTGRES_PASSWORD: ${PASSWORD_SERVICE}
POSTGRES_DB: ${DATABASE_SERVICE}
networks:
- api-network
container_name: postgres-db
image: postgres:10
networks:
api-network:
driver: bridge
volumes:
pgReportData:
driver: local
node_modules:
.env:
NODE_ENV=development
PORT=30780
HOST_SERVICE=postgres-db
DATABASE_SERVICE=base
USER_SERVICE=user
PASSWORD_SERVICE=password
DIALECT=postgres
PORT_SERVICE=5444
api-docker.docker 文件:
FROM node:12
WORKDIR /src
COPY . .
COPY --chown=node:node . .
USER node
RUN npm install
EXPOSE $PORT
ENTRYPOINT ["npm", "run", "start:dev"]
当我运行时: docker-compose up
我收到此错误:
有什么想法吗?
有人能帮我吗 ??
解决方案
如果 node 是唯一连接到 postgre-db 的应用程序,您可以删除网络,并公开 postgredb 运行端口 (5432)。要连接到数据库,您可以简单地使用容器名称作为主机。
连接字符串:
"postgres://YourUserName:YourPassword@postgres-db:5432/YourDatabase";
version: '3.5'
services:
api-service:
build:
context: .
dockerfile: ./api-docker.dockerfile
image: api-service
container_name: api-service
restart: always
env_file: .env
environment:
- NODE_ENV=$NODE_ENV
ports:
- ${PORT}:3000
volumes:
- .:/home/node/api
- node_modules:/home/node/api/node_modules
depends_on:
- postgres-db
command: npm run start:dev
postgres-db:
expose:
- 5432
restart: always
env_file: .env
volumes:
- pgReportData:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${USER_SERVICE}
POSTGRES_PASSWORD: ${PASSWORD_SERVICE}
POSTGRES_DB: ${DATABASE_SERVICE}
container_name: postgres-db
image: postgres:10
volumes:
pgReportData:
driver: local
node_modules:
推荐阅读
- postgresql - postgresql:我更改了位置,它不再启动
- node.js - 在猫鼬模式中扩展接口以添加插件方法
- javascript - 使用 $ 将变量注入字符串不起作用
- odbc - ODBC 突然慢了 100 倍
- excel - 从 Word 在同一文件夹中打开 Excel 工作簿并复制粘贴一些单元格
- c# - 如何从 HTTP 触发的 Azure 函数返回 blob?
- javascript - 如何调用两个 onClick JavaScript 调用?
- javafx - 通过散点图上的 3K 点提高性能
- r - 如何编写一个循环,以便 R 在完成一定数量的行后产生结果?
- ios - UITableView 单元格 detailTextLabel 文本对齐不起作用