Quiero usar la ventana acoplable para dockerizar mis proyectos de C++. Internet tiene recomendaciones de que es mejor usar 2 contenedores: desarrollo y producto. Pero no entiendo cómo necesito crear un contenedor de desarrollo para admitir la integración continua.
Las preguntas son las siguientes:
Tal vez no estoy en la dirección correcta y, por ejemplo, ¿un contenedor de desarrollo debería incluir eclipse? Aunque ¿qué pasa entonces con CI? Todos los tutoriales que encuentro suelen hacer referencia a PHP, que sin etapa de compilación.
Tienes diferentes patrones con Docker y C++.
Compile proyectos con imágenes Docker listas
Esto incluye el uso de imágenes de la ventana acoplable con el compilador deseado y las bibliotecas de terceros (creadas con la compilación de la ventana acoplable ) y la compilación de su proyecto con el comando de ejecución de la ventana acoplable . Esta suele ser la forma más utilizada para tratar con entornos de CI.
Pro:
Contras:
Cree imágenes de Docker en todo el proyecto
En este caso, encapsula todos los requisitos y el código en una imagen acoplable, lo que significa que debe reconstruirla cada vez que cambie su código, eliminar los contenedores en ejecución anteriores, descargar la nueva imagen en su servidor de CI, etc.
Ventajas:
Contras:
Recuerda que Docker tiene una cierta cantidad de capas máximas permitidas (supongo que todavía son 127), cuantas más capas tengas, más grande será la imagen.
Considere construcciones de varias etapas
Las compilaciones de etapas múltiples son una adición reciente a Docker y pueden acelerar el proceso de compilación al crear una imagen en caché que contiene todas las herramientas necesarias para producir la imagen final.
Conclusión
Definitivamente optaría por la primera solución, porque le brinda más flexibilidad y puede mantener sus cambios en diferentes entornos, siempre que use Docker Volumes, especialmente si usa algunos administradores de paquetes como conan o vcpkg.
Para ver un ejemplo de imagen de Docker/C++, siguiendo la solución n.º 1, consulte: una de mis imágenes de Docker
Acerca de los lanzamientos, puede crear su imagen acoplable usando COPY o ADD en un Dockerfile extremadamente simple con solo las dependencias mínimas requeridas por su proyecto (lo mejor se logra compilando estáticamente su código)