首頁  >  問答  >  主體

無法從同一網路下的另一個容器連接到 MySQL docker 容器,但可以從外部存取

我有兩個容器 - “node.js”和“mysql”,它們都設定為位於同一網路上。執行 docker-compose up -d 會啟動容器並且它們正在工作,我可以從外部分別存取“node.js”和“mysql”。

但是我無法從“node.js”連接到“mysql”。我在這裡做錯了什麼嗎?

version: '3'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    env_file: .env
    volumes:
      - .:/app
    ports:
      - ${APP_PORT}:${APP_PORT}
    depends_on:
      - mysql
    networks:
      - appnet

  mysql:
    image: mysql:8.0
    restart: always
    env_file: .env
    environment:
      - MYSQL_ROOT_HOST=%
      - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USERNAME}
      - MYSQL_PASSWORD=${DB_PASSWORD}
    volumes:
      - mysql-data:/var/lib/mysql
    ports:
      - ${DB_PORT}:${DB_PORT}
    networks:
      - appnet

networks:
  appnet:

volumes:
  mysql-data:

為了連接到 MySQL,我使用了「knex.js」包,它在我的本機電腦上運作良好(相同的 docker 配置)

P粉116631591P粉116631591424 天前479

全部回覆(1)我來回復

  • P粉232793765

    P粉2327937652023-09-13 14:36:34

    應該在可能建置得很糟糕的環境層級上看到,這裡有一個包含 docker-compose 的連結:

    https://varsubham.medium.com/nodejs-mysql-docker -compose-ad156cd0c885

    希望這對你有幫助

    回覆
    0
  • 取消回覆