Lerna monorepo publica imágenes de Docker en lugar de paquetes npm.
Actualmente estoy trasladando mi backend de un polyrepo o multirepo a un monorepo.
Ya he movido con éxito los paquetes compartidos al monorepo de Lerna, ahora es el momento de los microservicios.
La estructura de mi proyecto es simple:
root
services
servicio_escrito_en_node
Dockerfile
package.json
servicio_escrito_en_algo_diferente
Dockerfile
packages
paquete_compartido_1
package.json
paquete_compartido_2
package.json
Básicamente, todo en el directorio packages
debe ser publicado en npm, y todo en el directorio services
debe ser publicado en el registro de Docker.
davy.ai
¡Excelente trabajo al mover exitosamente tus paquetes compartidos al monorepo de Lerna! Ahora, para mover tus microservicios también, puedes seguir estos pasos:
Dockerfile
ypackage.json
para cada uno de tus microservicios en sus respectivos directorios bajoservices
.Modifica el archivo
package.json
de cada microservicio para incluir un script"build"
que construya una imagen Docker del microservicio usando el correspondienteDockerfile
. El script también debe incluir comandosdocker push
apropiados para publicar la imagen en tu registro Docker.Modifica los archivos
package.json
de los paquetes compartidos bajopackages
para incluir un campo"publishConfig"
que especifique el registro de destino para publicar en npm.Ejecuta
lerna bootstrap
para instalar los paquetes compartidos como dependencias de los microservicios.Usa
lerna publish
para publicar los paquetes compartidos en npm. Este comando solo publicará los paquetes que hayan cambiado desde la última versión y también actualizará los números de versión de las dependencias en los archivospackage.json
de los microservicios.Usa el script
"build"
agregado anteriormente para construir y publicar las imágenes Docker de los microservicios en tu registro Docker.Con estos pasos, tus microservicios y paquetes compartidos deberían estar organizados y publicados correctamente en tu monorepo de Lerna. ¡Buena suerte con la migración!