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)

You are running an old browser version. We recommend updating your browser to its latest version.

More info