new-api怎么使用自己的数据库信息?

使用 Docker Compose部署的,我改成自己的数据库信息总是报错连不上…

Docker Compose

services:
  new-api:
    image: calciumion/new-api:latest
    container_name: new-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - "127.0.0.1:3111:3000"
    volumes:
      - ./data:/data
      - ./logs:/app/logs
    environment:
      # 修改为服务器上MySQL的连接信息,格式为:用户名:密码@tcp(主机地址:端口)/数据库名
      - SQL_DSN=root:密码@tcp(127.0.0.1:3306)/new-api
      # 修改为服务器上Redis的连接信息,格式为:redis://主机地址:端口
      - REDIS_CONN_STRING=redis://:redis_kyRrJE@//127.0.0.1:6379/0
      - TZ=Asia/Shanghai
    
    network_mode: bridge
    
    healthcheck:
      test: ["CMD-SHELL", "wget -q -O - http://localhost:3111/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $$2}'"]
      interval: 30s
      timeout: 10s
      retries: 3

# 移除了原有的 redis 和 mysql 服务定义
3 个赞

容器内部无法通过127.0.0.1连接到外部数据库的,数据库的ip改成172.17.0.1试试。当然你的root账号需要允许来自172.17.0.1的连接才行

1 个赞

mysql容器用的是host网络

1 个赞

你new-api没用host网络呀,全部都搞到一个Bridge网络里面就好了

1 个赞

mysql是不是host不重要,问题是你newapi的网络配置,要么你newapi用host,要么用172.17.0.1

1 个赞


这也有问题,其实你可以喂给AI让它检查一下

ok,已搞定

感谢提醒,已搞定

1 个赞