【问题标题】:connect ECONNREFUSED 127.0.0.1:3306 in adonis 5 docker mysql [duplicate]在adonis 5 docker mysql中连接ECONNREFUSED 127.0.0.1:3306 [重复]
【发布时间】:2022-01-22 07:26:53
【问题描述】:

我正在使用 Adonis 5 和 Mysql 数据库,在遵循一些教程后,我添加了此代码来连接 mysql。但它显示“连接 ECONNREFUSED 127.0.0.1:3306”错误。下面是我的代码:

我的Dockerfile

FROM node:14

RUN mkdir -p /home/node/app/node_modules

WORKDIR /home/node/app

COPY package*.json ./

# RUN apk add --no-cache git

COPY . /home/node/app/

RUN chown -R node:node /home/node

RUN npm install

USER node

EXPOSE 3333

ENTRYPOINT ["node","ace","serve","--watch"]

我的docker-compose.yml 文件:

# For more information: https://github.com/julien-r44/adonis-sail
version: '3'

services:
  mysql:
   image: 'mysql/mysql-server:8.0'
   container_name: mysql
   expose:
     - "3307"
  ports:
     - '${MYSQL_PORT:-3307}:3306'
  environment:
    MYSQL_ROOT_PASSWORD: '${MYSQL_PASSWORD}'
    MYSQL_ROOT_HOST: "%"
    MYSQL_DATABASE: '${MYSQL_DB_NAME:?err}'
    MYSQL_USER: '${MYSQL_USER:?err}'
    MYSQL_PASSWORD: '${MYSQL_PASSWORD?:err}'
    MYSQL_ALLOW_EMPTY_PASSWORD: 1
  volumes:
    - 'sailmysql:/var/lib/mysql'
  networks:
   - sail

phpmyadmin:
  image: 'phpmyadmin/phpmyadmin'
  links:
     - 'mysql:mysql'
  ports:
     - 8080:80
  environment:
    MYSQL_USERNAME: "${MYSQL_USER}"
    MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}"
    PMA_HOST: mysql
  networks:
   - sail
app:
 links:
   - mysql
 build:
   context: .
   dockerfile: Dockerfile
 volumes:
  - .:/home/node/app
  - /home/node/app/node_modules
 ports:
  - 3333:3333
 depends_on:
  - mysql
  - phpmyadmin
networks:
 sail:
  driver: bridge

volumes:
 sailmysql:
  driver: "local"

我的.env 文件:

HOST=0.0.0.0
PORT=3333
APP_URL=http://${HOST}:${PORT}
NODE_ENV=development
APP_KEY=wH94pOFV47NO0dJtE_S6-TDRgcjgZXGM
SESSION_DRIVER=cookie
CACHE_VIEWS=false
DB_CONNECTION=mysql
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=adonis
MYSQL_PASSWORD=adonis
MYSQL_DB_NAME=social

错误: it shows this error

我的错误是什么?

【问题讨论】:

  • mysql 容器中的日志的文本格式是什么?
  • [Entrypoint] MySQL Docker Image 8.0.28-1.2.7-server [Entrypoint] 启动 MySQL 8.0.28-1.2.7-server

标签: mysql docker adonis.js


【解决方案1】:

MYSQL_HOST=localhost 更改为MYSQL_HOST=mysql

当您的应用在 docker 容器中运行时,localhost 不再指向您的笔记本电脑(或服务器),而是指向容器本身。

当一个应用程序尝试访问数据库服务时,每个服务都在单独的容器中运行,因此您不能使用localhost。由于localhost 指向该容器,并且数据库未安装在那里。

在指定连接 URL 时,您应该使用容器名称而不是 localhost

您也可以查看Docker Compose network 文档了解详细说明。

【讨论】:

  • 感谢您的回复,但它对我不起作用。
猜你喜欢
  • 2019-05-28
  • 2021-01-19
  • 2019-12-22
  • 1970-01-01
  • 2017-08-11
  • 2021-02-27
  • 1970-01-01
  • 2020-04-09
相关资源
最近更新 更多