如何修复这个issue,运行mysql容器wheneve我尝试数据库相关的操作

8yparm6h  于 12个月前  发布在  Mysql
关注(0)|答案(1)|浏览(112)

`

version: '3.8'

services:
  splitpay-app:
    build:
      context: .
      dockerfile: Dockerfile.nodejs
    volumes:
      - .:/usr/src/app
    ports:
      - "8080:8080"
    depends_on:
      - mysql-db
      - redis
    environment:
      DB_DATABASE: ${DB_DATABASE}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      DB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      DB_HOST: ${DB_HOST}
      SECRET_KEY: ${SECRET_KEY}
      
    networks:
      - my-networks    
    
  
  mysql-db:
    build:
      context: .
      dockerfile: Dockerfile.mysql
    ports:
      - "3301:3306"
    expose:
      - "3306"  
    volumes:
      - dbdata:/data/db  
    networks:
      - my-networks    
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}

  redis:
    build:
      context: .
      dockerfile: Dockerfile.redis
    ports:
      - "6379:6379"
    networks:
      - my-networks  

volumes:
  dbdata:

networks:
  my-networks:
    driver: bridge

字符串
`

pvcm50d1

pvcm50d11#

错误消息的IP地址指示您的问题。Error: ECONNREFUSED 127.0.0.1:3306
127.0.0.1是localhost。在容器上下文中,localhost是容器本身。因此,您的应用正在尝试连接到应用容器中的数据库。这不起作用。数据库正在另一个容器中运行,其地址与localhost不同。
要让它连接到数据库容器,您需要使用主机名mysql-db而不是localhost
在应用程序的某个地方(可能是在连接字符串或代码中),数据库地址设置为localhost,需要将其更改为mysql-db

相关问题