繁体   English   中英

设置 server.js

[英]Setting up server.js

我正在尝试使用 docker 将我的 React 应用程序容器化,现在我有点卡在 server.js 文件中,因为我不知道如何在里面“实现”应用程序。 我能够简单地显示“Hello World”,但似乎无法在里面运行应用程序。

我最初的想法是,我可以只使用 index.js 文件作为入口点并在“res.end(x)”中使用它,因为这是我可以简单地输入“Hello World”的地方。

我只是缺少一些小东西还是我的一般方法是错误的?

我的 server.js 文件如下所示:

const http= require('http');
const fs = require('fs');
const index = fs.readFileSync('index.js');

let app = http.createServer((req, res) => {
res.writeHead(200,{'Content-Type': 'text/plain'});
res.end(index);
});

app.listen(9030, '0.0.0.0');
console.log('Node server running on port 9030')

我与您分享这个最佳文档: https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

React 一般编码在.jsx文件中,需要编译/转译成常规的 Javascript。 完成此操作后,您可以以任何您喜欢的方式将这些文件提供给 web 浏览器。

了解构建工具

React 编译/转译是使用WebpackParcel完成的。 如果您使用的是 Create-React-App,那么您在后台使用的是 Webpack。 CRA npm start将运行 Webpack 开发服务器, npm run build会将您需要的所有文件放在构建目录中。 如果你愿意,你应该做后者

避免使用 Webpack 开发服务器

大多数教程,包括评论中链接的教程,建议使用 Webpack 开发服务器(又名npm start )在 Docker 中运行您的服务器。 不建议这样做。 它不仅会消耗更多的资源来运行,而且开发版本在浏览器中的运行速度也会比生产版本慢。 开发服务器也不意味着处理繁重的负载。

使用build进行生产,使用真实服务器

使用npm run build生成build目录下的 build 文件,然后使用真正的 web 服务器将它们提供给世界。

Docker 中的一个示例,使用 Nginx 来提供文件,可以在这里找到

或者,CRA 构建命令本身提供了一个有用的提示:

构建文件夹已准备好部署。 您可以使用 static 服务器为它提供服务:

npm 安装 -g 服务
服务 -s 构建

这将在 Docker 节点容器中工作。 一个非常未优化的 Dockerfile 的示例可能如下所示

FROM node:16-alpine

COPY . . 

RUN npm install

RUN npm build

RUN npm install -D serve

CMD ["./node_modules/.bin/serve", "-s", "build"]

可以在此处改进构建过程以利用缓存(通过首先复制package.jsonpackage-lock.json RUN在此处安装,然后再复制代码,请参阅此处的所有命令示例)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM