【问题标题】:Docker Compose cannot connect to databaseDocker Compose 无法连接到数据库
【发布时间】:2018-12-21 04:04:13
【问题描述】:

我在后端使用nestjs,并使用typeorm 作为ORM。 我试图在 docker-compose 文件中定义我的数据库和我的应用程序。

如果我将数据库作为容器运行,而我的应用程序从本地计算机运行,它运行良好。我的程序连接并创建表等。

但如果我尝试从容器内连接数据库或使用 docker-compose up 启动容器,则会失败。

总是收到 ECONNREFUSED 错误。

我的错误在哪里?

docker-compose.yml

version: '3.1'
volumes:
 dbdata:

services:
  db:
    image: postgres:10
    volumes:
      - ./dbData/:/var/lib/postgresql/data
    restart: always
    environment:
      - POSTGRES_PASSWORD=${TYPEORM_PASSWORD}
      - POSTGRES_USER=${TYPEORM_USERNAME}
      - POSTGRES_DB=${TYPEORM_DATABASE}
    ports:
      - ${TYPEORM_PORT}:5432

  backend:
    build: .
    ports:
      - "3001:3000"
    command: npm run start
    volumes:
      - .:/src

Dockerfile

FROM node:10.5

WORKDIR /home

# Bundle app source
COPY . /home

# Install app dependencies
#RUN npm install -g nodemon
# If you are building your code for production
# RUN npm install --only=production
RUN npm i -g @nestjs/cli
RUN npm install

EXPOSE 3000

.env

# .env
HOST=localhost
PORT=3000
NODE_ENV=development
LOG_LEVEL=debug

TYPEORM_CONNECTION=postgres
TYPEORM_HOST=localhost
TYPEORM_USERNAME=postgres
TYPEORM_PASSWORD=postgres
TYPEORM_DATABASE=mariokart
TYPEORM_PORT=5432
TYPEORM_SYNCHRONIZE=true
TYPEORM_DROP_SCHEMA=true
TYPEORM_LOGGING=all
TYPEORM_ENTITIES=src/database/entity/*.ts
TYPEORM_MIGRATIONS=src/database/migrations/**/*.ts
TYPEORM_SUBSCRIBERS=src/database/subscribers/**/*.ts

我尝试使用链接,但它在容器中不起作用。

【问题讨论】:

    标签: docker docker-compose typeorm nestjs


    【解决方案1】:

    查看backend 容器中的/etc/hosts。你会看到

    192.0.18.1    dir_db_1
    

    或类似的东西。 IP 将不同,dir 将代表您所在的目录。因此,您必须将TYPEORM_HOST=localhost 更改为TYPEORM_HOST=dir_db_1

    不过,我建议您为容器设置静态名称。

    services:
      db:
        container_name: project_db
        ...
      backend:
        container_name: project_backend
    

    在这种情况下,您始终可以确定您的容器将有一个静态名称,并且您可以设置 TYPEORM_HOST=project_db,并且再也不用担心名称了。

    【讨论】:

      猜你喜欢
      • 2017-11-18
      • 1970-01-01
      • 2019-11-06
      • 2019-02-25
      • 1970-01-01
      • 2018-04-08
      • 2019-07-10
      • 1970-01-01
      • 2015-05-19
      相关资源
      最近更新 更多