У меня есть простое приложение, составленное из Express. js в качестве внутреннего API и React. js в качестве клиента Frontend.
Я создаю контейнер для одиночного изображения с внешним и внутренним репозиторием приложений: 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();
}, []);
Для развертывания и запуска этого образа в мини-кубе я использую следующие команды:
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:
Я не знаю, где мне нужно это исправить, если мне нужно сделать какое-то исправление в React, или сделать некоторые настройки в Kubernetes, или даже это лучшая практика для развертывания небольших приложений в качестве контейнера Изображение в Kubernetes.
Заранее спасибо.