【问题标题】:error: connect ECONNREFUSED 127.0.0.1:3306 Error: connect ECONNREFUSED 127.0.0.1:3306 Build and compose up strapi on digital ocean错误:连接 ECONNREFUSED 127.0.0.1:3306 错误:连接 ECONNREFUSED 127.0.0.1:3306 在数字海洋上构建和组合strapi
【发布时间】:2022-11-04 04:02:29
【问题描述】:

我正在尝试在 docker 桌面上运行没有任何错误的图像容器。 当我尝试在 Digital Ocean 上运行相同的命令和存储库时,我收到了这个错误

error: connect ECONNREFUSED 127.0.0.1:3306
Error: connect ECONNREFUSED 127.0.0.1:3306
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1157:16)
    --------------------
    at Protocol._enqueue (/app/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/app/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/app/node_modules/mysql/lib/Connection.js:116:18)
    at /app/node_modules/knex/lib/dialects/mysql/index.js:56:18
    at new Promise (<anonymous>)
    at Client_MySQL.acquireRawConnection (/app/node_modules/knex/lib/dialects/mysql/index.js:51:12)
    at create (/app/node_modules/knex/lib/client.js:237:39)
error Command failed with exit code 1.

码头工人撰写:

version: "3"
services:
  mysql:
    image: mysql
    command: mysqld --default-authentication-plugin=mysql_native_password
    volumes:
      - ./data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: strapi
      MYSQL_DATABASE: strapi
      MYSQL_USER: strapi
      MYSQL_PASSWORD: strapi

  strapi:
    image: strapiproje:latest
    environment:
      DATABASE_CLIENT: mysql
      DATABASE_HOST: mysql
      DATABASE_PORT: 3306
      DATABASE_NAME: strapi
      DATABASE_USERNAME: strapi
      DATABASE_PASSWORD: strapi
      DATABASE_SSL: "false"
    volumes:
      - ./app:/srv/app
    ports:
      - "1337:1337"
    depends_on:
      - mysql

我也尝试 DATABASE_HOST: 127.0.0.1 但没有任何改变有人对我有任何建议吗?

【问题讨论】:

标签: docker digital-ocean strapi


【解决方案1】:

您可能缺少从主机的端口 3306 到 docker 容器中相同端口的映射。您的 docker-compose.yml 文件应如下所示:

version: "3"
services:
  mysql:
    image: mysql
    command: mysqld --default-authentication-plugin=mysql_native_password
    volumes:
      - ./data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD: strapi
      - MYSQL_DATABASE: strapi
      - MYSQL_USER: strapi
      - MYSQL_PASSWORD: strapi
    ports:
      - "3306:3306"   <----- notice these lines


  strapi:
    image: strapiproje:latest
    environment:
      DATABASE_CLIENT: mysql
      DATABASE_HOST: mysql
      DATABASE_PORT: 3306
      DATABASE_NAME: strapi
      DATABASE_USERNAME: strapi
      DATABASE_PASSWORD: strapi
      DATABASE_SSL: "false"
    volumes:
      - ./app:/srv/app
    ports:
      - "1337:1337"
    depends_on:
      - mysql

【讨论】:

    最近更新 更多