Use Docker/Containers for Development and Deployment
Description:
Develop applications in containers (e.g. VS Code Devcontainers). Test applications in containers, ideally automated within a CI environment (e.g. GitLab CI, GitHub Actions). Build images from sourcecode, ship images instead of e.g. raw binaries, ideally within a CI environment as well. Run image as container in production, define production state as code (e.g. docker-compose).
Links:
https://www.docker.com/
https://docs.gitlab.com/ee/ci/
https://code.visualstudio.com/docs/devcontainers/containers
Keywords:
Docker, Container, CI, CD, Image, Automation, Software Engineering
Motivation:
Avoid error-prone and repetitive build/test tasks by defining them within e.g. Dockerfiles. Provide a consistent and reproducible development and production environment.
Requirements/Prerequisities:
Docker, Tools supporting containers (development machine, production server)
Level:
concret: specific best practice (e.g. use microservice)
Application domain:
Data science (analysis & visualisation), Industry (Production), Software engineering
Main phase:
Development: Implementation/Code/Build, Development: Testing, Operations: Deployment/Release
Related literature:
https://resources.github.com/devops/containerization/ (2022)
In which projects do/did you use this practice?
NodeDoc
Software Tester, Software Engineer, Researcher
>10 years of experiences
Software Competence Center Hagenberg
1. How do you rate the potential benefit for your projects? | 5 |
2. How often are you using that practice? | 4 |
3. What is the effort to introduce the practice in your project upfront? | 2 |
4. What is the effort to apply the best practice in your project daily basis? | 1 |
Questions 1, 3 and 4 (1 = Low, 5 = High)
Question 2 (1 = Never, 5 = Always)