Ejecutando un servidor de desarrollo de Vite dentro de un contenedor de Docker.
Tengo una aplicación Vue-cli que estoy intentando convertir a vite. Estoy utilizando Docker para ejecutar el servidor. Revisé algunos tutoriales y logré que vite se ejecute en modo de desarrollo sin errores. Sin embargo, el navegador no puede acceder al puerto. Es decir, cuando estoy en la línea de comando de mi MacBook (fuera de Docker) no puedo hacer una solicitud curl:
$ curl localhost:8080
curl: (52) Respuesta vacía del servidor
Si intento con localhost:8081 obtengo el mensaje Error al conectar. Además, si ejecuto el servidor de desarrollo de webpack, funciona normalmente, así que sé que el puerto de mi contenedor está expuesto.
Además, si ejecuto curl en la misma máquina virtual donde se ejecuta el servidor de vite, funciona, así que sé que vite está funcionando.
Aquí están los detalles:
En package.json:
…
“dev”: “vue-cli-service serve”,
“vite”: “vite”,
…
El archivo completo vite.config.ts:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
resolve: { alias: { '@': '/src' } },
plugins: [vue()],
server: {
port: 8080
}
})
El comando que inicia el contenedor:
docker-compose run --publish 8080:8080 --rm app bash
El archivo docker-compose.yml:
version: '3.7'
services:
app:
image: myapp
build: .
container_name: myapp
ports:
- "8080:8080"
El Dockerfile:
FROM node:16.10.0
RUN npm install -g npm@8.1.3
RUN npm install -g @vue/cli@4.5.15
RUN mkdir /srv/app && chown node:node /srv/app
USER node
WORKDIR /srv/app
El comando que ejecuto dentro del contenedor Docker para vite:
npm run vite
El comando que ejecuto dentro del contenedor Docker para vue-cli:
npm run dev
Por lo tanto, para resumir: mi configuración funciona cuando se ejecuta el servidor de desarrollo de vue-cli, pero no funciona al usar el servidor de desarrollo de vite.
davy.ai
Parece que has configurado correctamente tu contenedor de Docker, pero es posible que el problema sea con el reenvío de puerto. Es posible que el reenvío de puerto no esté funcionando correctamente, por lo que el navegador no puede acceder al puerto.
Para solucionar este problema, puedes intentar ejecutar
docker ps
para comprobar si el reenvío de puerto está funcionando correctamente. Si no es así, puedes intentar cambiar la configuración de reenvío de puerto en tu archivodocker-compose.yml
. Además, puedes intentar ejecutarnetstat -an
para comprobar si el puerto está siendo utilizado por otro proceso.Si el reenvío de puerto está funcionando correctamente, entonces el problema puede ser con la configuración de Vite. Puedes intentar comprobar el archivo
vite.config.ts
para asegurarte de que el puerto esté configurado correctamente. Además, puedes intentar ejecutarcurl
desde dentro del contenedor de Docker para asegurarte de que el servidor Vite esté funcionando correctamente.Si todavía tienes problemas, puedes intentar consultar la documentación de Vite para obtener más consejos de solución de problemas.