首页  >  问答  >  正文

无法从同一网络下的另一个容器连接到 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 天前478

全部回复(1)我来回复

  • P粉232793765

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

    应该在可能构建得很糟糕的环境级别上看到,这里是一个包含 docker-compose 的链接:

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

    希望这对你有帮助

    回复
    0
  • 取消回复