You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署NestJS+GraphQL遇schema.gql权限问题,Altair无法访问

问题排查与解决步骤

1. 确认NestJS GraphQL核心配置

检查app.module.ts中的GraphQL模块配置,确保开启schema introspection并正确指定schema文件路径:

import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';

@Module({
  imports: [
    GraphQLModule.forRoot({
      autoSchemaFile: 'schema.gql', // 确保路径与容器工作目录(/statrics-server)对应
      introspection: true, // 开发环境必须开启,否则客户端无法获取schema
      playground: true, // 辅助调试用,确保schema可被外部访问
    }),
  ],
})
export class AppModule {}

2. 验证API服务监听地址

进入api容器,检查服务是否监听0.0.0.0:4000而非仅本地127.0.0.1:

docker exec -it api sh
apk add net-tools
netstat -tulpn | grep 4000

若显示仅监听127.0.0.1,修改main.ts的启动代码:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(4000, '0.0.0.0'); // 指定允许外部访问的监听地址
}
bootstrap();

3. 检查Nginx转发配置(若通过Nginx访问)

如果你的Altair请求是指向Nginx的60端口,需确认./docker/dev/nginx/conf.d/下的配置文件是否正确转发请求到api服务:

server {
  listen 80;
  server_name localhost;

  # 转发GraphQL请求
  location /graphql {
    proxy_pass http://api:4000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }

  # 转发schema文件请求
  location /schema.gql {
    proxy_pass http://api:4000/schema.gql;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

修改后重启Nginx容器:

docker-compose restart nginx

4. 排查文件权限问题

虽然Dockerfile设置了chmod 777,但挂载的宿主机目录可能覆盖权限。检查宿主机schema.gql权限:

ls -l ./server/schema.gql

若权限不足,调整权限匹配容器内用户(uid:2000):

chmod 644 ./server/schema.gql
chown 2000:2000 ./server/schema.gql

5. 查看API服务启动日志

检查api容器日志,确认服务是否完全启动、有无数据库连接等报错:

docker-compose logs api

若存在PostgreSQL连接问题,确认:

  • postgres容器正常运行:docker-compose ps postgres
  • .env中数据库连接字符串的主机名为postgres(对应compose服务名),格式示例:
    DATABASE_URL="postgresql://user:password@postgres:5432/dbname?schema=public"
    

内容的提问来源于stack exchange,提问作者Mo1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:33:28