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

Docker部署SvelteKit+PocketBase应用时遇连接拒绝错误求助

Docker化SvelteKit+PocketBase应用请求失败问题解决

问题

本地运行整合PocketBase的SvelteKit应用完全正常,但Docker化后所有请求均失败,出现如下错误:

错误信息

ClientResponseError 0: 处理请求时发生错误。
2023-02-16 10:34:53     at new ClientResponseError (file:///app/node_modules/pocketbase/dist/pocketbase.es.mjs:1:2285)
2023-02-16 10:34:53     at file:///app/node_modules/pocketbase/dist/pocketbase.es.mjs:1:40471
2023-02-16 10:34:53     at processTicksAndRejections (node:internal/process/task_queues:96:5)
2023-02-16 10:34:53     at async GET (file:///app/build/server/chunks/_server.ts-49cdad99.js:4:20)
2023-02-16 10:34:53     at async render_endpoint (file:///app/build/server/index.js:1494:22)
2023-02-16 10:34:53     at async resolve (file:///app/build/server/index.js:3671:22)
2023-02-16 10:34:53     at async Object.handle (file:///app/build/server/chunks/hooks.server-8970b6b5.js:8:20)
2023-02-16 10:34:53     at async respond (file:///app/build/server/index.js:3564:22)
2023-02-16 10:34:53     at async Array.ssr (file:///app/build/handler.js:1190:3) {
2023-02-16 10:34:53   url: '',
2023-02-16 10:34:53   status: 0,
2023-02-16 10:34:53   data: {},
2023-02-16 10:34:53   isAbort: false,
2023-02-16 10:34:53   originalError: TypeError: fetch 请求失败
2023-02-16 10:34:53       at fetch (file:///app/build/shims.js:20696:14)
2023-02-16 10:34:53       at processTicksAndRejections (node:internal/process/task_queues:96:5)
2023-02-16 10:34:53       at async GET (file:///app/build/server/chunks/_server.ts-49cdad99.js:4:20)
2023-02-16 10:34:53       at async render_endpoint (file:///app/build/server/index.js:1494:22)
2023-02-16 10:34:53       at async resolve (file:///app/build/server/index.js:3671:22)
2023-02-16 10:34:53       at async Object.handle (file:///app/build/server/chunks/hooks.server-8970b6b5.js:8:20)
2023-02-16 10:34:53       at async respond (file:///app/build/server/index.js:3564:22)
2023-02-16 10:34:53       at async Array.ssr (file:///app/build/handler.js:1190:3) {
2023-02-16 10:34:53     cause: Error: 连接被拒绝 ECONNREFUSED 127.0.0.1:8090
2023-02-16 10:34:53         at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) {
2023-02-16 10:34:53       errno: -111,
2023-02-16 10:34:53       code: 'ECONNREFUSED',
2023-02-16 10:34:53       syscall: 'connect',
2023-02-16 10:34:53       address: '127.0.0.1',
2023-02-16 10:34:53       port: 8090
2023-02-16 10:34:53     }
2023-02-16 10:34:53   }
2023-02-16 10:34:53 }

核心原因

错误里的ECONNREFUSED 127.0.0.1:8090是关键:在Docker容器内部,127.0.0.1指向容器自身,而非宿主机或PocketBase容器。你的SvelteKit应用仍在尝试访问本地环回地址,但在Docker网络环境中,这个地址无法找到PocketBase服务。

解决步骤

1. 确保容器处于同一Docker网络

如果使用docker-compose,默认会自动创建专属网络,只需将SvelteKit和PocketBase放在同一个docker-compose.yml文件中即可。若手动创建容器,需显式指定加入同一网络:

# 创建共享网络
docker network create pb-svelte-network
# 启动PocketBase并加入网络
docker run --network pb-svelte-network -p 8090:8090 ... pocketbase/pocketbase:latest
# 启动SvelteKit并加入同一网络
docker run --network pb-svelte-network -p 3000:3000 ... your-sveltekit-image

2. 修改PocketBase访问地址为服务名

在SvelteKit代码中,将PocketBase的初始化地址从http://127.0.0.1:8090替换为Docker服务名(例如docker-compose中PocketBase服务的名称,假设为pocketbase):

import PocketBase from 'pocketbase';

// 替换为服务名地址
const pb = new PocketBase('http://pocketbase:8090');

3. 配置容器启动顺序与端口

使用docker-compose时,通过depends_on确保PocketBase先于SvelteKit启动,同时确认端口暴露正确:

services:
  pocketbase:
    image: pocketbase/pocketbase:latest
    ports:
      - "8090:8090"
    volumes:
      - ./pb_data:/pb_data
  sveltekit:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - pocketbase
    environment:
      - VITE_PB_URL=http://pocketbase:8090

4. 用环境变量适配多环境

建议通过环境变量管理PocketBase地址,实现本地与Docker环境无缝切换:

  • 本地开发时,设置环境变量VITE_PB_URL=http://127.0.0.1:8090
  • Docker环境中,设置为VITE_PB_URL=http://pocketbase:8090

在SvelteKit中读取环境变量:

const pbUrl = import.meta.env.VITE_PB_URL || 'http://127.0.0.1:8090';
const pb = new PocketBase(pbUrl);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:55:19