我正在尝试在一个码头化的快递应用程序中通过一个chrome实例获得灯塔分数,但得到了:

flare_backend   | Error: connect ECONNREFUSED 127.0.0.1:9222
flare_backend   |     at __node_internal_captureLargerStackTrace (node:internal/errors:484:5)
flare_backend   |     at __node_internal_exceptionWithHostPort (node:internal/errors:662:12)
flare_backend   |     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1300:16) {
flare_backend   |   errno: -111,
flare_backend   |   code: 'ECONNREFUSED',
flare_backend   |   syscall: 'connect',
flare_backend   |   address: '127.0.0.1',
flare_backend   |   port: 9222
flare_backend   | }

我基本上有两种服务:

class TestService {
    async launchChrome () {
        return await launch({
            chromeFlags: ["--headless", "--no-sandbox", "--disable-gpu"],
            port: 9222
        });
    }

    async runLighthouse (url: string, chrome: LaunchedChrome, config: unknown) {
        return await lighthouse(url, { port: chrome.port }, config);
    }
}
async getTest () {
    const chrome = await TestService.launchChrome();

    console.log(chrome.port);

    const lighthouse = await TestService.runLighthouse(
        "https://www.google.com",
        chrome,
        { extends: "lighthouse:default" }
    );

    return lighthouse;
}

我的后端Dockerfile和docker compose文件如下所示:

ARG NODE_VERSION="18.12.1"
ARG ALPINE_VERSION="3.17"

FROM --platform=linux/amd64 node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS base

WORKDIR /home/flare
RUN chown -R node:node /home/flare
RUN apk update && apk upgrade && \
    apk add --no-cache chromium && \
    rm -rf /var/cache/apk/*

ENV CHROME_BIN=/usr/bin/chromium-browser

COPY --chown=node:node package*.json ./
COPY --chown=node:node prisma ./prisma/

RUN npm install && npm cache clean --force
RUN npx prisma generate

COPY --chown=node:node . .

EXPOSE 8080

USER node
version: '3.9'
services:
    postgres:
        container_name: flare_postgres
        image: postgres:15.1-alpine
        restart: unless-stopped
        volumes:
            - ./backend/sql:/var/lib/postgresql/data
        env_file:
            - ./backend/.env
        ports:
            - 5432:5432
        networks:
            - flare_network
    redis:
        container_name: flare_redis
        image: redis:7.0.5-alpine
        restart: unless-stopped
        ports:
            - 6379:6379
        networks:
            - flare_network
    nginx:
        container_name: flare_nginx
        build: ./backend/nginx
        restart: unless-stopped
        ports:
            - 80:80
            - 443:443
        depends_on:
            - backend
            - frontend
        networks:
            - flare_network
    prisma:
        container_name: flare_prisma
        command: sh -c "prisma migrate deploy && prisma studio"
        build: ./backend/prisma
        restart: unless-stopped
        ports:
            - 5555:5555
        env_file:
            - ./backend/.env
        depends_on:
            - postgres
        networks:
            - flare_network
    backend:
        container_name: flare_backend
        command: sh -c "npm install && npm run dev"
        build: ./backend
        volumes:
            - ./backend:/home/flare
            - /home/flare/node_modules
        working_dir: /home/flare
        restart: unless-stopped
        depends_on:
            - postgres
            - redis
        ports:
            - 8080:8080
        networks:
            - flare_network
    frontend:
        container_name: flare_frontend
        command: sh -c "npm install && npm run dev"
        build: ./frontend
        volumes:
            - ./frontend:/home/flare
            - /home/flare/node_modules
        working_dir: /home/flare
        restart: unless-stopped
        depends_on:
            - backend
        ports:
            - 3000:3000
            - 24678:24678
        networks:
            - flare_network
networks:
    flare_network:
        driver: bridge

我试图更改一些配置等,但无法解决问题。当我尝试在本地运行此应用程序时,它运行时没有问题,但在码头化环境中没有问题。我怀疑这可能是网络问题,但也不应该是真正的问题,因为express应用程序和chrome实例位于同一个容器中。这里可能有什么问题?

将chrome实例与码头化的express应用程序连接时出错的更多相关文章

  1. Swift 后端开发

    作为一门新兴的现代化语言,Swift可以说是苹果在开发语言上的一次集大成之作,吸收了很多语言的优点。而且苹果还期望Swift能在服务端开发上能发挥作用。Perfect框架Perfect框架是Swift开发的Web应用服务器,它支持包括Redis、sqlite、Postgresql、MysqL、MongoDB、FileMaker这样的数据库,并且能以fastcgi或者Web服务器的形式提供服务。具体内容得到Swift源代码中可以找到。

  2. Swift构建总是在Docker中构建整个包

    使用像这样的Dockerfile时:当第3步运行时,swiftbuild将只编译应用程序一次,因为第二次执行将只使用已构建的对象,输出将是单个CompileSwiftModule’foo'然而,在运行第4步时,它似乎忽略了已经构建的任何东西,并重新重建整个事物,尽管没有任何改变且没有干净.我试过运行RUNls/foo/.build&&ls/tmp,一切似乎都到位了.我想要在现实中实现的是设置我的图像所以我首先从git克隆项目,构建它,然后copY在本地机器的任何变化中构建新的更新,但最终建立整个项目2次.

  3. 在Android上使用Docker

    是否可以在Android上构建Docker应用程序?我注意到现在没有,但内核毕竟是基于Linux内核的.如果有办法在没有生根的情况下做到这一点,那就更好了!是否有可能为Android创建Docker应用程序?如果是这样,有没有人知道任何进展?

  4. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  5. Docker 如何布置PHP开发环境

    本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊。推荐PHP开发者阅读。

  6. Node.js使用Express创建Web项目详细教程

    如果需要入门使用node.js进行web开发,正在学习 nodejs web开发指南 的和想快速了解node.js web开发模式的朋友,相信本文是有一定帮助意义的。

  7. 详解Node.js开发中的express-session

    express-session 是基于express框专门用于处理session的中间件,本篇文章主要介绍了详解Node.js开发中的express-session,有兴趣的可以了解一下

  8. nodejs+express搭建多人聊天室步骤

    本篇文章给大家详细讲解了nodejs+express搭建一个简易的多人聊天室的详细步骤,有兴趣的朋友学习下。

  9. node.js的Express服务器基本使用教程

    express是一个开源的node.js项目框架,下面这篇文章主要给大家介绍了关于node.js的Express服务器基本使用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧

  10. 一篇文章教会你部署vue项目到docker

    在前端开发中,部署项目是我们经常发生的事情,下面这篇文章主要给大家介绍了关于部署vue项目到docker的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

随机推荐

  1. 如何扩展ATmega324PB微控制器的以下宏寄存器?

    我目前正在学习嵌入式,我有以下练习:展开以下宏寄存器:如果有人解决了这个问题,我将不胜感激,以便将来参考

  2. Python将ONNX运行时设置为返回张量而不是numpy数组

    在python中,我正在加载预定义的模型:然后我加载一些数据并运行它:到目前为止,它仍在正常工作,但我希望它默认返回Tensor列表,而不是numpy数组。我对ONNX和PyTorch都是新手,我觉得这是我在这里缺少的基本内容。这将使转换中的一些开销相同。

  3. 在macOS上的终端中使用Shell查找文件中的单词

    我有一个文本文件,其中有一行:我需要找到ID并将其提取到变量中。我想出了一个RexEx模式:但它似乎对我尝试过的任何东西都不起作用:grep、sed——不管怎样。我的一个尝试是:我为这样一个看似愚蠢的问题感到抱歉,但我在互联网上找不到任何东西:我在SO和SE上读了几十个类似的问题,并在谷歌上搜索了几个教程,但仍然无法找到答案。欢迎提供任何指导!

  4. react-chartjs-2甜甜圈图中只有标题未更新

    我正在使用react-chartjs-2在我的网站中实现甜甜圈图。下面是我用来呈现图表的代码。我将甜甜圈图的详细信息从父组件传递到子组件,所有道具都正确传递。当我在beforeDraw函数外部记录props.title时,它会记录正确的值,但当我在beforeDraw函数内部记录props.title时,它将记录标题的前一个值,从而呈现标题的前值。我在这里做错了什么?

  5. 如何在tkinter中使用Python生成器函数?

    生成器函数承诺使某些代码更易于编写。但我并不总是知道如何使用它们。假设我有一个斐波那契生成器函数fib(),我想要一个显示第一个结果的tkinter应用程序。当我点击“下一步”按钮时,它会显示第二个数字,依此类推。我如何构建应用程序来实现这一点?我可能需要在线程中运行生成器。但如何将其连接回GUI?

  6. 如何为每次提交将存储库历史记录拆分为一行?

    我正在尝试获取存储库的历史记录,但结果仅以单行文本的形式返回给我。

  7. 尝试在颤振项目上初始化Firebase时出错

    当尝试在我的颤振项目上初始化firebase时,我收到了这个错误有人知道我能做什么吗?应用程序分级Gradle插件Gradle项目颤振相关性我已经将firebase设置为Google文档已经在另一个模拟器上尝试过,已经尝试过创建一个全新的模拟器,已经在不同的设备上尝试过了,已经尝试了特定版本的firebase,已经尝试添加但没有任何效果,已经在youtube上看到了关于它的每一个视频,该应用程序在android和iOS两个平台上都抛出了这个错误

  8. 在unix中基于当前日期添加新列

    我试图在unix中基于时间戳列在最后一个单元格中添加一个状态列。我不确定如何继续。

  9. 麦克斯·蒙特利。我一直得到UncaughtReferenceError:当我在终端中写入node-v时,节点未定义

    如果这是您应该知道的,请确认:我已将所有shell更改为默认为zsh。当我在终端中写入node-v时,我一直收到“UncaughtReferenceError:nodeisnotdefined”。但它显示节点已安装。我是个新手,在这方面经验不足。

  10. 如何在前端单击按钮时调用后端中的函数?

    那么如何在后端添加一个新的端点,点击按钮调用这个函数。

返回
顶部