Cómo instalar GitLab con Docker en Ubuntu 20.04 LTS

Instalar Docker en Ubuntu 20.04

GitLab es un administrador de repositorios de código abierto basado en Rails desarrollado por GitLab Inc. Es un administrador de repositorios git basado en la web que le permite a su equipo colaborar en la codificación, prueba e implementación de aplicaciones. GitLab proporciona varias funciones, que incluyen wikis, seguimiento de problemas, revisiones de código y fuentes de actividad.

En este tutorial, le mostraremos cómo instalar GitLab usando Docker y Docker Compose. Además, usaremos Ubuntu 20.04 como nuestro sistema operativo principal e instalaremos Docker desde el repositorio oficial de Ubuntu FocalFossa.

requisitos previos

  • Servidor Ubuntu 20.04
  • Mínimo 4GB de RAM
  • Privilegios de raíz

¿Que haremos?

  • Instalar Docker y Docker Compose
  • Configurar el proyecto Docker de GitLab
  • Construir un contenedor de GitLab
  • Instalación posterior de GitLab

Paso 1: instale Docker y Docker Compose

Primero, instalaremos los paquetes docker y docker-compose en nuestro sistema Ubuntu 20.04. Y usaremos los paquetes docker proporcionados por el repositorio oficial de Ubuntu FocalFossa.

Actualice todos los repositorios a la última versión e instale docker y docker-compose usando el comando apt a continuación.

sudo apt update
sudo apt install docker.io containerd docker-compose

Una vez completada toda la instalación, inicie el servicio docker y agréguelo al inicio del sistema.

systemctl start docker
systemctl enable docker

Luego, verifique el servicio docker usando el comando systemctl a continuación.

systemctl status docker

Como resultado, el servicio docker está activo y funcionando en Ubuntu 20.04 Server.

Instalar Docker en Ubuntu 20.04

Para verificar la instalación de Docker, ejecute el comando docker «hello-world» a continuación.

docker run hello-world

Ahora obtendrá el mensaje «hola mundo» de la ventana acoplable como se muestra a continuación.

Docker ejecuta hola mundo

Ahora estamos listos para instalar GitLab usando docker container y docker-compose.

Paso 2: configurar el directorio de GitLab

En este paso, configuraremos nuestro directorio de proyectos para la instalación de GitLab.

Cree un nuevo directorio llamado ‘gitlab’ y acceda a él.

mkdir -p gitlab; cd gitlab/

El directorio «gitlab» se usará para almacenar todas las secuencias de comandos y la configuración de Docker para GitLab.

Cree un directorio de datos de GitLab y un archivo .env

En esta sección, crearemos un nuevo directorio para almacenar todos nuestros datos de GitLab y crearemos un nuevo archivo «.env» que utilizará Docker.

Cree un nuevo directorio de datos de GitLab «/srv/gitlab» usando el comando mkdir a continuación.

mkdir -p /srv/gitlab/{config/ssl,logs,data}

Luego, en el directorio del proyecto «gitlab», cree un nuevo archivo «.env» usando el editor vim.

vim .env

Defina la variable de entorno «GITLAB_HOME» con el valor como directorio de datos de GitLab «/srv/gitlab» como se muestra a continuación.

GITLAB_HOME=/srv/gitlab

Guardar y cerrar.

El script docker-compose.yml utilizará la variable de entorno para los volúmenes de Gitlab.

Crear secuencia de comandos docker-compose.yml

A continuación, crearemos un nuevo «docker-compose.yml» que se usará para construir nuestro contenedor GitLab.

Cree el nuevo archivo ‘docker-compose.yml’ usando el comando vim a continuación.

vim docker-compose.yml

Defina el servicio llamado «web» con la imagen de la última versión de «gitlab-ce» y cambie el «nombre de host» con su nombre de dominio de GitLab.

web:
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.hakase-labs.io'

Configure el entorno para su instalación de Gitlab como se muestra a continuación. Y asegúrese de cambiar «external_url» con el protocolo seguro HTTPS y cambie «gitlab_rails[‘gitlab_shell_ssh_port’]» con su puerto SSH alternativo para el contenedor.

  environment:
    GITLAB_OMNIBUS_CONFIG: |
      # Add any other gitlab.rb configuration here, each on its own line
      external_url 'https://gitlab.hakase-labs.io'
      gitlab_rails['gitlab_shell_ssh_port'] = 2224
      nginx['redirect_http_to_https'] = true
      nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"
      nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"
      nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"

A continuación, defina los puertos para el contenedor de GitLab como se muestra a continuación. Y asegúrese de cambiar el puerto SSH «2224» con su puerto personalizado y hacerlo coincidir con el puerto «gitlab_shell_ssh_port» en la parte superior.

  ports:
    - '80:80'
    - '443:443'
    - '2224:22'

Después de eso, defina el volumen o sus directorios de datos de GitLab. Todos los directorios de datos de GitLab están disponibles en el directorio «GITLAB_HOME», que se establece en la variable de entorno en el archivo «.env» en la parte superior.

  volumes:
    - '${GITLAB_HOME}/config:/etc/gitlab'
    - '${GITLAB_HOME}/logs:/var/log/gitlab'
    - '${GITLAB_HOME}/data:/var/opt/gitlab'
    - '${GITLAB_HOME}/config/ssl:/etc/gitlab/ssl'

Guardar y cerrar.

A continuación se muestra la configuración completa.

web:
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.hakase-labs.io'

environment:
GITLAB_OMNIBUS_CONFIG: |
# Add any other gitlab.rb configuration here, each on its own line
external_url ‘https://gitlab.hakase-labs.io’
gitlab_rails[‘gitlab_shell_ssh_port’] = 2224
nginx[‘redirect_http_to_https’] = true
nginx[‘ssl_certificate’] = «/etc/gitlab/ssl/fullchain.pem»
nginx[‘ssl_certificate_key’] = «/etc/gitlab/ssl/privkey.pem»
nginx[‘ssl_dhparam’] = «/etc/gitlab/ssl/dhparams.pem»

ports:
– ’80:80′
– ‘443:443’
– ‘2224:22’

volumes:
– ‘${GITLAB_HOME}/config:/etc/gitlab’
– ‘${GITLAB_HOME}/logs:/var/log/gitlab’
– ‘${GITLAB_HOME}/data:/var/opt/gitlab’
– ‘${GITLAB_HOME}/config/ssl:/etc/gitlab/ssl’


Como resultado, se ha creado el script «docker-compose.yml» para la instalación del proyecto GitLab.

Generar Certificados SSL y DHAPARAM

En esta etapa, generaremos el SSL Letsencrypt para nuestra instalación de GitLab.

En su servidor, instale la herramienta certbot usando el comando apt a continuación.

sudo apt install certbot

Después de eso, genere el certificado SSL para GitLab usando el comando certbot a continuación.

certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d gitlab.hakase-labs.io

Una vez que todo esté completo, sus certificados estarán disponibles en el directorio ‘/etc/letsencrypt/live/gitlab.yourdomain’.

Ahora copie el archivo de certificado «fullchain.pem» y «privkey.pem» en el directorio «/srv/gitlab/config/ssl/».

cp /etc/letsencrypt/live/gitlab.hakase-labs.io/fullchain.pem /srv/gitlab/config/ssl/
cp /etc/letsencrypt/live/gitlab.hakase-labs.io/privkey.pem /srv/gitlab/config/ssl/

Y el SSL Letsencrypt para GitLab está listo.

Luego, genere el certificado DHPARAM «dhparam.pem» usando el comando openssl a continuación.

sudo openssl dhparam -out /srv/gitlab/config/ssl/dhparams.pem 2048

Y se generaron todos los certificados para la instalación de GitLab, y estamos listos para construir el contenedor de GitLab.

Configurar SSL para GitLab

Paso 3: crea el contenedor de GitLab

En este paso, construiremos nuestro contenedor de GitLab usando toda la configuración que hemos creado en la parte superior y usando el comando docker-compose.

Antes de continuar, puede verificar todos los archivos disponibles en el directorio del proyecto «gitlab» y la estructura del directorio del directorio de datos de GitLab.

ls -lah ~/gitlab/
tree /srv/gitlab

A continuación se muestra el resultado que obtendrá.

Configurar todos los archivos para GitLab Container

Luego, vaya al directorio del proyecto «~/gitlab» y cree el contenedor de GitLab usando el comando «docker-compose» a continuación.

cd ~/gitlab
docker-compose up -d

Una vez que todo esté completo, obtendrá el resultado que se muestra a continuación.

Crear un contenedor Docker para GitLab

Ahora verifique el contenedor en ejecución y los puertos «LISTEN» en su sistema Ubuntu usando el siguiente comando.

docker-compose ps
ss -plnt

Y obtendrás el contenedor «gitlab_web_1» está en funcionamiento y tiene el puerto HTTP, HTTPS y SSH «2224» utilizado por el contenedor de GitLab.

Comprobación del contenedor de GitLab

Como puede verse, el contenedor de GitLab está funcionando y estamos listos para configurar nuestra instalación de GitLab.

Paso 4: instalación posterior de GitLab

Abra su navegador web y escriba su instalación de URL de GitLab en la barra de direcciones.

https://gitlab.hakase-labs.io/

Y obtendrá la página de restablecimiento de contraseña de GitLab.

GitLab Cambiar contraseña

Escriba su nueva contraseña para el usuario predeterminado «root» y haga clic en el botón «Cambiar su contraseña».

Ahora obtendrá la página de inicio de sesión de GitLab como se muestra a continuación.

Página de inicio de sesión de Gitlab como usuario raíz predeterminado

Inicie sesión con el usuario predeterminado «raíz» y su nueva contraseña, luego haga clic en «Iniciar sesión».

Y obtendrá el Panel de GitLab como se muestra a continuación.

Tablero GitLab

Como se puede ver, la instalación de GitLab usando docker y docker-compose se ha completado.

Paso 5 – Contenedor de GitLab de configuración básica

Después de la instalación de GitLab, puede agregar alguna configuración adicional al contenedor de GitLab sin destruir el contenedor de GitLab. Para este paso, le mostraremos la forma básica de administrar el contenedor de GitLab.

Antes de continuar, vaya al directorio del proyecto «~/gitlab» y verifique el estado del contenedor con el siguiente comando.

cd ~/gitlab
docker-compose ps

Obtendrá el contenedor de GitLab en funcionamiento.

Comprobar el estado del servicio de GitLab dentro del contenedor

Para verificar todos los servicios de GitLab dentro del contenedor de Gitlab, use el comando «docker exec» como se muestra a continuación.

sudo docker exec -it gitlab_web_1 gitlab-ctl status

A continuación se muestra el resultado que obtendrá.

Estado de los servicios de verificación de contenedores de Gitlab

Como puede verse, todos los componentes del servicio de GitLab están en funcionamiento.

Acceder al contenedor de GitLab

Para usar SSH en el contenedor de GitLab, use «docker exec» con el shell «bash» dentro del contenedor como se muestra a continuación.

sudo docker exec -it gitlab_web_1 /bin/bash

Ahora verifique la versión predeterminada de Ubuntu del contenedor de GitLab.

cat /etc/lsb-release

Obtendrá el contenedor de GitLab basado en Ubuntu 16.04 Xenial.

Iniciar sesión en el contenedor de GitLab

Ahora escriba «salida» para cerrar sesión en el contenedor de GitLab.

Edite la configuración de GitLab gitlab.rb

A continuación, para cambiar la configuración de GitLab dentro del contenedor, puede usar el «editor» predeterminado en el propio contenedor acoplable.

Edite la configuración «/etc/gitlab/gitlab.rb» dentro del contenedor usando el comando docker a continuación.

sudo docker exec -it gitlab_web_1 editor /etc/gitlab/gitlab.rb

Ahora obtendrá el editor «nano» predeterminado en la pantalla, con el archivo de configuración «gitlab.rb».

Escriba su configuración, guarde y salga.

Luego, para aplicar los nuevos cambios a GitLab, reinicie el servicio de contenedor de Gitlab usando el siguiente comando.

sudo docker restart gitlab_web_1

Ahora asegúrese de que no haya ningún error, verifique el estado del contenedor de GitLab usando el siguiente comando.

sudo docker-compose ps

Ahora asegúrese de que el cotainer de GitLab esté en el «arriba (saludable)» estado.

Configurar contenedor de GitLab

Como resultado, se aplicó la nueva configuración para GitLab.

Y por último, la instalación de GitLab mediante docker y docker-compose se ha completado con éxito.

Deja una respuesta

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