Guías de Lenguaje y Marco
Guía completa para desplegar aplicaciones Next.js con Docker
24 min
back4app containers es una plataforma poderosa para alojar aplicaciones next js con su capacidad para desplegar automáticamente aplicaciones next js en contenedores docker, puedes lanzar tu proyecto en un entorno escalable y flexible con facilidad en esta guía, te guiaremos a través del proceso de preparar y desplegar tu aplicación next js en back4app containers, cubriendo todo, desde proyectos simples hasta configuraciones más complejas comenzaremos con los preparativos necesarios, luego pasaremos a dockerizar la aplicación, probarla localmente, subir el proyecto a github, configurar el proyecto en back4app containers, monitorear el despliegue y solucionar problemas comunes si tienes alguna pregunta o comentario, no dudes en unirte a la conversación en el canal #containers en la comunidad de back4app en slack en cualquier momento también puedes contactarnos en community\@back4app com en cualquier momento, si deseas revisar un proyecto next js de muestra funcionando en los contenedores de back4app, ve a https //github com/templates back4app/containers nextjs sample https //github com/templates back4app/containers nextjs sample 1 prepara tu aplicación next js a estructura del proyecto verifica que tu aplicación next js siga una estructura de directorio adecuada, con todos los archivos y carpetas necesarios, como pages , public , components , y styles , organizados apropiadamente el punto de entrada principal para tu aplicación debe ser el archivo pages/index js o pages/index jsx b dependencias verifique si todas las dependencias requeridas están listadas en el package json archivo, incluyendo sus versiones correctas asegúrese de haber instalado todas las dependencias usando npm install o yarn install para generar un package lock json o yarn lock archivo c proceso de construcción para proyectos más complejos que involucren un proceso de construcción, asegúrese de que sus scripts y configuraciones de construcción (por ejemplo, webpack, babel o next js) estén correctamente configurados debería poder ejecutar el proceso de construcción localmente sin problemas d variables de entorno si su aplicación depende de variables de entorno, asegúrese de tener un env archivo con las variables necesarias definidas al desplegar en back4app containers, necesitará configurar estas variables de entorno en la configuración de despliegue e configuración del servidor (si aplica) si su aplicación next js incluye un servidor personalizado (por ejemplo, express), asegúrese de que esté correctamente configurado para servir su aplicación next js pruebe su servidor localmente para asegurarse de que funcione como se espera f optimización de la aplicación optimice su aplicación next js minimizando los tamaños de los paquetes, utilizando la división de código e implementando las mejores prácticas de rendimiento use herramientas como lighthouse para auditar su aplicación y abordar cualquier problema de rendimiento o accesibilidad g compatibilidad entre navegadores prueba tu aplicación en múltiples navegadores y dispositivos para asegurar un renderizado y funcionalidad adecuados una vez que hayas revisado y preparado a fondo tu aplicación next js, puedes proceder al siguiente paso, que es crear un dockerfile para tu proyecto 2 dockerización dockerizar una aplicación next js implica crear un dockerfile en el directorio raíz de tu proyecto el dockerfile contiene instrucciones para construir una imagen docker de tu aplicación, que luego puede ser desplegada en back4app containers aquí tienes una explicación detallada de cómo crear un dockerfile para una aplicación next js típica 1 crea un nuevo archivo llamado dockerfile (sin ninguna extensión de archivo) en el directorio raíz de tu aplicación next js 2 define la imagen base comienza el dockerfile especificando una imagen base usando el comando from para una aplicación next js típica, la imagen base debe ser una imagen de node js, por ejemplo, node 14 o node 16 from node 14 3 establece el directorio de trabajo usa el comando workdir para establecer el directorio de trabajo para tu aplicación dentro del contenedor docker aquí es donde se almacenarán y ejecutarán los archivos de tu aplicación workdir /app 4 copia package json y package lock json copia los archivos package json y package lock json de tu máquina local al contenedor docker usando el comando copy estos archivos son necesarios para instalar las dependencias de tu aplicación copy package json / 5 instalar dependencias utiliza el comando run para instalar las dependencias de tu aplicación desde el archivo package json esto se hace típicamente usando npm ci, que instala las versiones exactas de las dependencias especificadas en el archivo package lock json run npm ci 6 copiar el resto de los archivos del proyecto utiliza el comando copy nuevamente para copiar los archivos y carpetas restantes de tu máquina local al contenedor de docker copy 7 construir la aplicación next js agrega un comando run para construir tu aplicación next js usando tu script de construcción, típicamente npm run build esto genera una versión lista para producción de tu aplicación next js en la carpeta next run npm run build 8 configurar el servidor necesitas un servidor para servir tu aplicación next js construida una opción común es el servidor integrado de next js primero, instálalo globalmente en el contenedor de docker usando el comando run run npm install g next 9 exponer el puerto del servidor utiliza el comando expose para especificar el puerto en el que tu servidor se ejecutará dentro del contenedor de docker por ejemplo, puedes usar el puerto 3000 expose 3000 10 iniciar el servidor utiliza el comando cmd para especificar el comando que inicia el servidor para servir tu aplicación next js construida con el servidor integrado de next js, puedes especificar el script de inicio y el número de puerto cmd \["next", "start", " p", "3000"] el dockerfile completo para una aplicación típica de next js debería verse así from node 14 workdir /app copy package json / run npm ci copy run npm run build run npm install g next expose 3000 cmd \["next", "start", " p", "3000"] otros ejemplos de dockerfiles que puedes usar como referencia ejemplo 1 usando un servidor nginx si prefieres usar un servidor nginx para servir tu aplicación next js, puedes crear un dockerfile de múltiples etapas en este caso, primero construirás la aplicación next js y luego copiarás los archivos generados al servidor nginx \# stage 1 build the next js application from node 14 as builder workdir /app copy package json / run npm ci copy run npm run build \# stage 2 set up the nginx server from nginx\ stable alpine copy from=builder /app/ next /usr/share/nginx/html copy from=builder /app/public /usr/share/nginx/html/ next/static copy nginx conf /etc/nginx/conf d/default conf asegúrate de crear un archivo nginx conf apropiado para configurar correctamente el servidor nginx ejemplo 2 usando un servidor personalizado si tienes un servidor personalizado configurado para tu aplicación next js, puedes modificar el dockerfile en consecuencia aquí hay un ejemplo usando un archivo server js personalizado from node 14 workdir /app copy package json / run npm ci copy run npm run build expose 3000 cmd \["node", "server js"] en este ejemplo, el servidor personalizado se inicia con el node server js comando en lugar de usar el servidor de next js 3 construir y ejecutar el contenedor de docker después de crear el dockerfile, puedes construir la imagen de docker y ejecutar un contenedor a partir de ella usa los siguientes comandos para construir y ejecutar el contenedor docker build t your image name docker run p 3000 3000 your image name reemplaza "your image name" con un nombre para tu imagen de docker una vez que el contenedor esté en funcionamiento, puedes acceder a tu aplicación de next js en http //localhost 3000 http //localhost 3000 en tu navegador web 4 prueba tu proyecto localmente antes de desplegar tu aplicación de next js en back4app containers, es importante probarla localmente usando docker esto ayuda a asegurar que tu aplicación funcione como se espera y te ayuda a identificar y solucionar cualquier problema antes del despliegue construye la imagen de docker para tu aplicación de next js en tu terminal, navega al directorio raíz de tu proyecto y ejecuta el siguiente comando, reemplazando your app name con el nombre de tu aplicación docker build t nombre de tu aplicación ejecuta el contenedor de docker localmente a continuación, ejecuta el siguiente comando para iniciar el contenedor de docker localmente este comando mapea el puerto expuesto del contenedor (por ejemplo, 3000) a un puerto en tu máquina local (por ejemplo, 3000) docker run p 3000 3000 nombre de tu aplicación prueba tu aplicación abre un navegador web y navega a http //localhost 3000 http //localhost 3000 para ver tu aplicación next js asegúrate de que todo funcione como se espera si encuentras algún problema, resuélvelo antes de pasar al siguiente paso 5 pulsa tu proyecto a github crea un gitignore archivo en el directorio raíz de tu proyecto para excluir archivos innecesarios o sensibles de tu repositorio (por ejemplo, node modules , env , build , etc ) inicializa un repositorio git, confirma los archivos de tu proyecto y súbelos a un repositorio remoto (por ejemplo, en github) git add git commit m "initial commit" git remote add origin \<your remote repo url> git push u origin master 6 despliega tu aplicación en back4app containers después de crear tu cuenta de back4app, puedes seguir los pasos listados en la documentación 1 conecta tu repositorio de github con back4app https //www back4app com/docs containers/integrate with github 2 prepara tu proyecto para el despliegue https //www back4app com/docs containers/prepare your deployment en resumen, los contenedores seguirán las instrucciones detalladas en tu dockerfile y comenzarán a crear tu aplicación 7 monitorea el despliegue y aborda posibles errores mantén un ojo en los registros de despliegue y el estado en el panel de control de contenedores de back4app aborda cualquier error o problema que surja durante el despliegue en caso de proyectos más complejos, asegúrate de que todos los servicios necesarios (como bases de datos o apis externas) estén correctamente configurados y accesibles 8 solucionando problemas comunes los errores comunes de despliegue al ejecutar una aplicación next js en los contenedores de back4app están listados aquí https //www back4app com/docs containers/troubleshooting otros posibles errores comunes al desplegar una aplicación next js son configuración de puerto incorrecta las aplicaciones next js deben configurarse para ejecutarse en un puerto especificado cuando se despliegan en los contenedores de back4app si la aplicación aún no es accesible, verifica el dockerfile para asegurarte de que el puerto correcto esté expuesto (por ejemplo, expose 3000 para el puerto 3000) dependencias incompatibles o faltantes asegúrate de que todas las dependencias requeridas estén listadas en el archivo package json y que sus versiones sean compatibles entre sí y con el código de tu aplicación las dependencias faltantes o incompatibles pueden provocar errores en tiempo de ejecución variables de entorno o configuración no válidas verifica si tu aplicación depende de variables de entorno específicas o archivos de configuración, y asegúrate de que estén configurados correctamente en el entorno de back4app containers establece cualquier variable de entorno necesaria en tu dockerfile utilizando el comando env caídas de la aplicación o excepciones no controladas excepciones no controladas o caídas en el código de tu aplicación next js pueden causar fallos en el despliegue o comportamientos inesperados examina los registros de tu aplicación en busca de mensajes de error y aborda cualquier problema en tu código verifica los registros del contenedor ejecutando docker logs your app name para ver si hay errores o excepciones que se estén lanzando utiliza una herramienta como sentry para rastrear y monitorear errores en tu aplicación configuración de renderizado del lado del servidor si tu aplicación next js utiliza renderizado del lado del servidor (ssr), asegúrate de que tu configuración de ssr esté correctamente configurada en tu dockerfile y que inicie tu aplicación utilizando el punto de entrada correcto 9 escala tu aplicación para proyectos más complejos que requieren recursos adicionales o escalado horizontal/vertical, considera actualizar tu plan de back4app containers para manejar el aumento de tráfico y carga 10 aplicación de muestra para un proyecto de aplicación next js de muestra, puedes ir a https //github com/templates back4app/containers nextjs sample