Table of contents
- 1. GitLab: Collaborative Development Hub
- 2. Jenkins: Continuous Integration Powerhouse
- 3. Harbor: Secure Container Registry
- 4. Hashicorp Vault: Secrets Guardian
- 5. ArgoCD: Kubernetes Deployment Maestro
- 6. SonarQube: Code Quality Monitor
- 7. Prometheus: Containers’ Watchguard
- 8. Grafana: Data Visualization Expert
- 9. Traefik: Traffic Router
- 10. Nginx Proxy Manager: Proxy Master
In the realm of DevOps, the adoption of containerized solutions has become instrumental in enhancing development workflows. These containers encapsulate applications and their dependencies, ensuring consistency across various environments. If you’re delving into the world of DevOps, understanding the top containers can significantly elevate your development and deployment processes. Let’s dive into the top 10 DevOps containers that are reshaping the landscape in 2023.
1. GitLab: Collaborative Development Hub
GitLab stands as a comprehensive platform for DevOps collaboration. Offering integrated CI/CD capabilities, it facilitates swift container deployment and seamless collaboration among teams.
yamlCopy codegitlab:
image: gitlab/gitlab-ee:latest
hostname: 'gitlab.mydomain.com'
restart: always
volumes:
- '~/homelabservices/gitlab/data:/var/opt/gitlab'
- '~/homelabservices/gitlab/config:/etc/gitlab'
- '~/homelabservices/gitlab/logs:/var/log/gitlab'
container_name: gitlab
2. Jenkins: Continuous Integration Powerhouse
Jenkins, a trusted CI/CD solution, specializes in automated builds and tests for containerized applications. Its extensive plugin ecosystem supports multiple containers and ensures continuous integration in container environments.
yamlCopy codeversion: '3.8'
services:
jenkins:
image: jenkins/jenkins:lts
privileged: true
user: root
ports:
- 8080:8080
- 50000:50000
container_name: jenkins
volumes:
- /home/jenkins_compose/jenkins_configuration:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
3. Harbor: Secure Container Registry
Harbor provides a secure container registry crucial for managing and securing container images. With role-based access control and vulnerability scanning, it ensures the integrity of your containerized applications.
bashCopy codecurl -LO https://raw.githubusercontent.com/bitnami/containers/main/bitnami/harbor-portal/docker-compose.yml
curl -L https://github.com/bitnami/containers/archive/main.tar.gz | tar xz --strip=2 containers-main/bitnami/harbor-portal && cp -RL harbor-portal/config . && rm -rf harbor-portal
docker-compose up
4. Hashicorp Vault: Secrets Guardian
Hashicorp Vault is essential for secrets management within containers. It generates dynamic secrets, encrypts data in transit and at rest, and ensures sensitive information remains secure without hardcoding in pipelines or configuration files.
yamlCopy codeversion: '3.6'
services:
vault:
image: vault:latest
container_name: vault
restart: on-failure:10
ports:
- "8201:8201"
environment:
VAULT_ADDR: 'https://0.0.0.0:8201'
cap_add:
- IPC_LOCK
volumes:
- vault-volume:/data
5. ArgoCD: Kubernetes Deployment Maestro
ArgoCD is a deployment maestro for Kubernetes environments, ensuring consistent deployments across multiple platforms. Its declarative approach and visualization tools streamline the deployment process.
yamlCopy codeversion: '2'
services:
argo-cd:
image: docker.io/bitnami/argo-cd:2
6. SonarQube: Code Quality Monitor
SonarQube guarantees high code quality within containers. Through continuous code quality checks and automated reviews, it aids in identifying and resolving bugs and vulnerabilities in containerized applications.
yamlCopy codeversion: "3"
services:
sonarqube:
image: sonarqube:community
hostname: sonarqube
container_name: sonarqube
depends_on:
- db
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
ports:
- "9000:9000"
db:
image: postgres:13
hostname: postgresql
container_name: postgresql
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
7. Prometheus: Containers’ Watchguard
Prometheus is a powerful monitoring tool for observing multiple containers. Its multi-dimensional data modeling and efficient alerting systems empower DevOps teams to maintain optimal container performance.
yamlCopy codeversion: '3.8'
volumes:
prometheus_data: {}
services:
prometheus:
image: prom/prometheus
restart: always
volumes:
- ./prometheus:/etc/prometheus/
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
ports:
- 9090:9090
8. Grafana: Data Visualization Expert
Grafana excels in visualizing and analyzing data within containers. With customizable dashboards and diverse panel plugins, it offers proactive issue identification and robust data visualization capabilities.
yamlCopy codeversion: "3.8"
services:
grafana:
image: grafana/grafana-enterprise
container_name: grafana
restart: unless-stopped
ports:
- '3000:3000'
9. Traefik: Traffic Router
Traefik efficiently balances load across containers, providing automatic service discovery and middleware support. Its intuitive dashboard simplifies monitoring, making it an invaluable tool for DevOps teams.
yamlCopy codeversion: '3.3'
services:
traefik2:
image: traefik:latest
restart: always
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
container_name: traefik
10. Nginx Proxy Manager: Proxy Master
Nginx Proxy Manager simplifies proxy management within containers, supporting both HTTP and HTTPS protocols. With SSL support and easy management of Let’s Encrypt certificates, it ensures secure and streamlined proxy hosting.
yamlCopy codeversion: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: always
networks:
- nginxproxy
ports:
- '80:80'
- '443:443'
- '81:81'
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: 'jc21/mariadb-aria:latest'
restart: always
networks:
- nginxproxy
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./mysql:/var/lib/mysql
Incorporating these containers into your DevOps stack can revolutionize your development process. By leveraging their capabilities, you empower your team to build, deploy, and manage containerized applications with efficiency and confidence.
I hope this will help you to revolutionize your development process and we'll be coming up with similar content in our upcoming blogs. So, be in touch with us by following us on the socials.
See ya 👋
Join our community on Discord - DevsInTech 🚀
Follow us on Twitter - DevsInTech!!!