Node.js 应用程序和 Edge.js 中的 C# 代码可以在本地运行...但不能在 Docker 容器中运行

问题描述 投票:0回答:1

我是新手,尝试在 Node.js 应用程序中执行 C# 代码,我在本地使用 edge.js 并使用以下代码:

var  formRoute =require("./routes/formRoute")
    const session = require("express-session");
    const express = require('express');
    const bodyParser = require("body-parser");
    var  app = express();
    app.set("view engine", "ejs")
    app.use(bodyParser.urlencoded({extended: true}))
    const Item = require('./class/Item')    //IMPORT ITEM LA CLASSE CHE USO PER SCRIVERE SU DB
    const pool = require('./database')
    var             {getItem,getItems,addItem,getItem2,updateDiscount,loadScript,updateScript,checkIfPresent} =     require('./dbDataManager') //IMPORT DI TUTTE LE FUNZIONI NECESSARIE
require("dotenv").config();
var scriptF = require('./ScriptDll/myScript')

var edge = require('edge-js')


var dllFunc = edge.func(
        {
                source: function (){/*
                using System;
                using System.Threading.Tasks;
                using System.Linq;
        
                public class Number
                {   
                public Number(int num)
                {
                        _Number = num;
                }
                public int _Number {get;set;}
                }
        
                public class Startup
                {
                        public async Task<object> Invoke(dynamic input)
                        {
                        return new Number(input.num);
                        }
                }
            */}
        }
)

app.get('/dllTest',(req,res)=> {
        var typeJson = {num:req.body.number}
        let updateType = dllFunc(typeJson,function (error,result){
                if (error)  throw error;
                console.log(result||error)
        })
        res.send(updateType)
})

这工作正常,但是当我使用 DockerFile 和 docker-compose 启动容器时 我收到以下错误..

撰写后出错

docker 文件是:`

> FROM node:22
> 
> 
> WORKDIR /app
> 
> 
> COPY package*.json ./
> 
> RUN npm install
> 
> 
> COPY . /app
> 
> EXPOSE 3308
> 
> CMD ["node","index.js"]`

还有这个 DockerCompose :`

services:
      appnode:
        image: nodeimage
        build: 
          context: ./ScontiNodeApp
      dockerfile: Dockerfile
    container_name: nodeappcont
    ports:
      - "3308:3308"
    volumes:
      - /DockerSave:/app/DockerData`

所以我不知道是否可以在容器内使用相同的代码。 我只是尝试了不同的方法,但对我来说没有任何效果。

重点是在 Node.js 应用程序中运行 C# 代码。

c# node.js .net docker edge.js
1个回答
0
投票

根据您的错误,您需要将 .NET SDK 安装到容器中。您可以尝试按照 Microsoft 的说明进行操作。

node:22
似乎基于 Debian Bookworm,因此您可以尝试 this(请注意,edge-js 目前将 .NET 8 列为最高支持版本,尽管理论上它也可能适用于最新的 .NET 9 ):

FROM node:22

RUN wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
RUN dpkg -i packages-microsoft-prod.deb
RUN rm packages-microsoft-prod.deb
RUN apt-get update && \
  apt-get install -y dotnet-sdk-8.0

WORKDIR /app

# the rest

如果这对您不起作用,请尝试此处提到的方法之一。

或者,您可以使用 .NET SDK 映像并将 Node 安装到其中。

© www.soinside.com 2019 - 2024. All rights reserved.