gpt4 book ai didi

node.js - 在 Kubernetes 上部署带有前端 + 后端应用程序的 Docker 镜像

转载 作者:行者123 更新时间:2023-12-02 20:42:30 31 4
gpt4 key购买 nike

我有一个由 Express.js 作为后端 API 和 React.js 作为前端客户端组成的简单应用程序。

我创建了一个带有前端和后端的单打图像容器
申请 repo :https://github.com/vitorvr/list-users-kubernetes

Dockerfile:

FROM node:13

WORKDIR /usr/app/listusers

COPY . .

RUN yarn
RUN yarn client-install
RUN yarn client-build

EXPOSE 8080

CMD ["node", "server.js"]

服务器.js
const express = require('express');
const cors = require('cors');
const path = require('path');

const app = express();
const ip = process.env.IP || '0.0.0.0';
const port = process.env.PORT || 8080;

app.use(express.json());
app.use(cors());
app.use(express.static(path.join(__dirname, 'public')));

app.get('/users', (req, res) => {
res.json([
{ name: 'Jhon', id: 1 },
{ name: 'Ashe', id: 2 }
]);
});

app.listen(port, ip, () =>
console.log(`Server is running at http://${ip}:${port}`)
);

响应调用:
const api = axios.create({
baseURL: 'http://0.0.0.0:8080'
});

useEffect(() => {
async function loadUsers() {
const response = await api.get('/users');
if (response.data) {
setUsers(response.data);
}
}
loadUsers();
}, []);

要在 minikube 中部署和运行此镜像,我使用以下命令:
kubectl run list-users-kubernetes --image=list-users-kubernetes:1.0 --image-pull-policy=Never
kubectl expose pod list-users-kubernetes --type=LoadBalancer --port=8080
minikube service list-users-kubernetes

当前端尝试访问 localhost 时会出现此问题:

enter image description here

我不知道我需要在哪里解决这个问题,如果我必须在 React 中进行一些修复,或者在 Kubernetes 中进行一些设置,甚至这是在 Kubernetes 上将小型应用程序部署为容器镜像的最佳实践。

提前致谢。

最佳答案

您的 Kubernetes Node ,假设它在您的本地开发机器上作为虚拟机运行,将有一个分配给它的 IP 地址。同样,当 IP 地址被分配给运行“list-user-kubernetes”服务的 pod 时。您可以通过运行以下命令查看 IP 地址:kubectl get pod list-users-kubernetes ,要查看更多信息,请添加 -o wide在命令的末尾,例如。 kubectl get pod list-users-kubernetes -o wide .

或者,您可以使用 kubectl port-forward pod/POD_NAME POD_PORT:LOCAL_PORT 将端口转发到您的本地主机。 .下面的例子:
kubectl port-forward pod/list-users-kubernetes 8080:8080注意:您应该将其作为后台服务或在终端的不同选项卡中运行,因为只要命令正在运行,端口转发就可用。

我建议使用第二种方法,因为 pod 的外部 IP 可以在部署期间更改,但将其映射到 localhost 将允许您在不更改代码的情况下运行应用程序。

Link to port forwarding documentation

关于node.js - 在 Kubernetes 上部署带有前端 + 后端应用程序的 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61017787/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com