Обслуживание приложения vue-cli на подпутье с помощью Nginx в докере
В настоящее время у меня работает проект Nuxt.js localhost/
с докером, и я пытаюсь обслужить свое приложение vue.js (созданное с использованием vue-cli) на localhost/admin
.
это мой nginx.conf
:
location / {
proxy_pass http://nuxt_app:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /admin {
proxy_pass http://admin_panel:4000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
docker-compose.yml
:
nuxt_app:
container_name: nuxt
build: ./frontend/
restart: always
command: sh -c "npm install && npm run start"
volumes:
- ./frontend:/app
admin_panel:
container_name: admin
build: ./admin/
restart: always
command: sh -c "npm install && npm run serve"
volumes:
- ./admin:/app
Dockerfile
для приложения vue.js:
FROM node:12.18.2-stretch-slim
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
после применения вышеуказанных настроек я получаю эту ошибку:
WebSocket connection to 'ws://localhost/sockjs-node/035/e3cyt5mb/websocket' failed: Error during WebSocket handshake: Unexpected response code: 200
я также пытался изменить sockPath
в vue.config.js
как это:
module.exports = {
publicPath: '/admin',
configureWebpack: {
plugins: [
{
apply: compiler => {
compiler.hooks.entryOption.tap('entry', () => {
const clients = compiler.options.entry.app
for (const index in clients) {
if (clients[index].match(/sockjs-node/)) {
clients[index] = clients[index].replace('0.0.0.0/sockjs-node', '0.0.0.0&sockPath=/admin/sockjs-node')
}
}
})
}
}
]
}
}
но он все еще не работает.