Gitlab sobre Docker

En este post explicaré el despliegue en docker de GitLab, GitLab es un servicio parecido a GitHub pero que lo podemos montar y gestionar por nuestra cuenta.

Por lo que si queremos gestionar nuestros proyectos privados (ya sean de la empresa o personales) es una muy buena manera de hacerlo. Además, ofrece una infinidad de opciones para conectar con herramientas de terceros: Jenkins, Prometheus, Influxdb.

Vamos a desplegar, con un docker-compose.yml, el cual, desplegará los siguientes contenedores:

Para no dejar expuesto el puerto 22, el contenedor de gitlab mapeara el puerto 22 interno hacia el puerto 2222 público.

Si no tienes el ejecutable docker-compone, aquí expliqué como tenerlo http://chechy.xyz/docker-compose-ese-gran-aliado/

El contenido del docker-compose.yml será el siguiente (tenemos que cambiar el valor external_url, por la url qué usaremos, cómo también los valores de traefik.gitlab_backend y traefik.frontend.rule) :

version: '3.4'

services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: gitlab
    hostname: 'gitlab'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        gitlab_rails['gitlab_shell_ssh_port'] = 8022
        external_url 'http://gitlab'
        nginx['ssl_certificate'] = '/etc/gitlab/ssl/gitlab.crt'
        nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/gitlab.key'
        pages_external_url 'http://gitlab'
        pages_nginx['redirect_http_to_http'] = true
        pages_nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
        pages_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
    networks:
      gitlab:
        aliases:
          - gitlab
    ports:
      - '8022:22'
      - '8080:80'
      - '8443:443'
    volumes:
      - 'gitlab-config-volume:/etc/gitlab'
      - 'gitlab-log-volume:/var/log/gitlab'
      - 'gitlab-data-volume:/var/opt/gitlab'
      - './docker-volumes/gitlab/ssl:/etc/gitlab/ssl'

  gitlab-runner:
    image: 'gitlab/gitlab-runner:latest'
    container_name: gitlab-runner
    environment:
      - 'DOCKER_NETWORK_MODE=gitlab_gitlab'
    links:
      - gitlab
    networks:
      - gitlab
    volumes:
      - 'gitlab-runner-config-volume:/etc/gitlab'
      - './docker-volumes/gitlab/ssl/gitlab.crt:/etc/gitlab-runner/certs/ca.crt'
      - '/var/run/docker.sock:/var/run/docker.sock'

volumes:
  gitlab-config-volume:
  gitlab-log-volume:
  gitlab-data-volume:
  gitlab-runner-config-volume:

networks:
  gitlab:
    driver: bridge

Creamos el directorio de gitlab y el docker-compose

mkdir gitlab && vim docker-compose.yml

Creamos la red traefik, para los contenedores

docker network create traefik

Construiremos los contenedores, con arranque en background con el comando:

docker-compose up -d

Tarda un poco en iniciar ya que carga varias cosas. Si se quiere ver que está haciendo:

docker-compose logs -f

Una vez iniciado nos podemos conectar mediante la URL que le hemos indicado en el docker-compose (external_url ‘http://dockerlab001’)y nos aparecerá la siguiente pantalla para establecer la contraseña del usuario root:

http://i1.wp.com/blog.ichasco.com/wp-content/uploads/2018/08/Selecci%C3%B3n_048.png?resize=810%2C421&ssl=1

Entramos con el usuario root y la contraseña qué acabamos de establecer:

http://i1.wp.com/blog.ichasco.com/wp-content/uploads/2018/08/Selecci%C3%B3n_049.png?resize=810%2C443&ssl=1

Ya tenemos gitlab funcionando. Ahora ya podemos proceder a crear grupos, usuarios y conectarlo, por ejemplo, a jenkins, para los despliegues.

Aquí podéis consultar todas las opciones del fichero de configuración de gitlab:

http://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template

http://pbs.twimg.com/media/DXxZPHrWkAA8NyC.jpg

Dejar una contestacion

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.