代码之家  ›  专栏  ›  技术社区  ›  PPShein

NodeJS无法连接到Docker容器内的MYSQL[重复]

  •  0
  • PPShein  · 技术社区  · 7 年前

    version: '3'
    services:
      node:
        build: ./app
        environment:
          - NODE_ENV=production
          - PORT=3000
          - MYSQL_HOST=ppshein-mysql
          - MYSQL_USER=root
          - MYSQL_PASSWORD=ppshein123456
        ports:
          - "3000:3000"
        networks:
        - my-bridge-network
        depends_on:
          - "${MYSQL_HOST}"
        container_name: ppshein-api
      db:
        image: mysql:8.0.14
        environment:
          - MYSQL_ROOT_PASSWORD=ppshein123456
        networks:
        - my-bridge-network
        container_name: ppshein-mysql
    networks:
      my-bridge-network:
        driver: bridge
    

    这是mysql sequelize的配置文件,

    "production": {
        "username": "root",
        "password": "ppshein123456",
        "database": "database_production",
        "host": "ppshein-mysql",
        "dialect": "mysql",
        "logging": false
    }
    

    这是 Dockerfile 对于NodeJS应用程序,

    FROM node:9.10.1
    ENV NODE_ENV=development
    COPY ./ /var/www
    WORKDIR /var/www/
    RUN yarn install && yarn add sequelize-cli -g
    EXPOSE 3000
    CMD /bin/bash ./wait-for-it.sh ppshein-mysql:3306 -- npm run docker
    

    最后,我遇到了以下错误消息:

    已加载配置文件“config/config.json”。使用环境 “生产”。2019年1月26日星期六01:03:45 GMT续集不推荐 现在不推荐使用基于字符串的运算符。请使用基于符号的 操作员为了更好的安全性,请访问 http://docs.sequelizejs.com/manual/tutorial/querying.html#operators 在 节点_modules/sequelize/lib/sequelize。js:242:13

    1 回复  |  直到 7 年前
        1
  •  2
  •   Elias Soares    7 年前

    您不应该在上访问MySQL 0.0.0.0 .

    Docker compose为同一网桥网络上的容器定义主机名等于容器名,因此您的MySQL主机名为 db

    如果要自定义容器主机名,可以使用网络上的别名。请看下面的答案: https://stackoverflow.com/a/47264089/3429323

    推荐文章