#spring-boot #docker #vue.js #npm #kubernetes
#весенняя загрузка #docker #vue.js #npm #kubernetes
Вопрос:
Я разработал серверную часть spring boot и vue
js
интерфейс. Я мог бы успешно развернуть приложение Spring boot и создать кластерный ip
сервис для приложения Spring boot, но я никогда не работал с проектом NPM на docker и kubernetes
. У меня также возникает проблема, Axios
когда я локально тестирую серверную часть и интерфейс, которые я предоставляю (localhost:backendport/endpoint)
для axios
, и как я могу адаптировать его к kubernetes
. должен ли я указывать ip
имя службы кластера вместо localhost:port/endpoint -> clusteripservice/endpoint
, если да, то как я могу экстернализировать конфигурации и как я могу развернуть оба приложения.
вот Axios
вызов
import axios from 'axios'
const API_URL = 'http://localhost:8084'
//const API_URL = '/'
class UserDataService {
retrieveAllUsers() {
return axios.get(`${API_URL}/user/getall`);
}
}
export default new UserDataService()
Ответ №1:
Идея состоит в том, чтобы использовать nginx в качестве контейнера вашего приложения и передавать прокси-сервер на серверную часть. Итак, вам нужно определить местоположение для вашего api, т. Е. /api и прокси-сервер.
Затем, если вы используете axios, вы должны вызывать все внутренние конечные точки по относительному пути, т. Е.
axios.get('/api/v1/myApiPath')
Таким образом, вам не нужно беспокоиться об имени хоста при вызовах серверной части.
Кроме того, для разработки вы аналогичным образом используете vue.js настройки разработки, чтобы также прокси-сервер через npm.
Смотрите мой игрушечный проект здесь для получения подробной информации о том, как это делается: Часть развертывания —https://github.com/taleodor/mafia-deployment Часть пользовательского интерфейса — https://github.com/taleodor/mafia-vue
В частности, настройки nginx с настройкой прокси —https://github.com/taleodor/mafia-vue/blob/master/nginx/default.conf (обратите внимание, что в нем используются веб-сокеты, которые вы можете удалить, если вы их не используете). В частности, конфигурация сервера разработки vue —https://github.com/taleodor/mafia-vue/blob/master/vue.config.js.
Напишите о работе CI / CD (не связано с вашим вопросом, но может быть полезно) — https://itnext.io/building-kubernetes-cicd-pipeline-with-github-actions-argocd-and-reliza-hub-e7120b9be870
Комментарии:
1. Ценю ваш ответ и есть ли у вас идея, если я использую axios, то как я могу обратиться к серверной части. в вашем проекте я не видел вызова axios.
2. Обновил мой ответ примером вызова axios — в основном вы всегда используете относительные пути, т. Е. axios.get (‘/api/v1/myApiPath’).
3. У меня есть еще один вопрос, я работаю над проектом microservices, и существует несколько внутренних микросервисов spring boot, которые необходимо связать с интерфейсом vue js. как вы думаете, какой наилучший способ подключить их к интерфейсу? напрямую подключитесь к интерфейсу или создайте один серверный сервер и подключите все остальные микросервисы к этому бэкэнду, затем основной сервер подключится к интерфейсу, но если я использую этот подход, мне придется выполнять повторяющуюся задачу, поскольку я должен кодировать тот же контроллер на главном сервере, что и другие микросервисы. Мне нужно знать лучшие практики и подход devops.