This article represents code sample on how to setup Jenkins & GitLab using Docker containers. Please feel free to comment/suggest if I missed to mention one or more important points. Also, sorry for the typos.
Create a docker compose file such as docker-compose.yml with the code given below. Executing command such as “docker-compose up” would lead to creation of two containers, one of which hosts the Jenkins and another one hosts GitLab. The Jenkins can be accessed with URL such as http://localhost:28080. The GitLab can be accessed using URL such as http://localhost. In case of running this docker-compose file on Linux/Ubuntu, change the volume under jenkins from “- /usr/local/bin/docker:/usr/bin/docker” to “- /usr/bin/docker:/usr/bin/docker”.
version: '2'
networks:
prodnetwork:
driver: bridge
services:
jenkins:
image: jenkins
ports:
- "28080:8080"
networks:
- prodnetwork
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /usr/local/bin/docker:/usr/bin/docker
- /opt/jenkins/:/var/lib/jenkins/
depends_on:
- gitlab
gitlab:
image: gitlab/gitlab-ce
restart: always
networks:
- prodnetwork
environment:
GITLAB_OMNIBUS_CONFIG: |
# external_url 'https://gitlab.example.com'
# Add any other gitlab.rb configuration here, each on its own line
ports:
- "80:80"
- "443:443"
- "2222:22"
volumes:
- /opt/gitlab/config:/etc/gitlab
- /opt/gitlab/logs:/var/log/gitlab
- /opt/gitlab/data:/var/opt/gitlab
- Chunking Strategies for RAG with Examples - November 2, 2025
- RAG Pipeline: 6 Steps for Creating Naive RAG App - November 1, 2025
- Python: List Comprehension Explained with Examples - October 29, 2025
I found it very helpful. However the differences are not too understandable for me