Chuyển tới nội dung

Cài đặt Gitlab và Gitlab-runner trên local với docker compose

1. Cài đặt gitlab

Bước 1. Tạo file docker-compose.yaml

Tạo một thư mục mới cho dự án, và tạo file docker-compose.yaml

version: '3.8'

services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: gitlab
    restart: always
    hostname: 'gitlab.local'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
        external_url 'http://gitlab.local'
        ### SMTP config for Gmail
        gitlab_rails['smtp_enable'] = true
        gitlab_rails['smtp_address'] = "smtp.gmail.com"
        gitlab_rails['smtp_port'] = 587
        gitlab_rails['smtp_user_name'] = "[email protected]"
        gitlab_rails['smtp_password'] = "your_app_password"
        gitlab_rails['smtp_domain'] = "smtp.gmail.com"
        gitlab_rails['smtp_authentication'] = "login"
        gitlab_rails['smtp_enable_starttls_auto'] = true
        gitlab_rails['smtp_tls'] = false

        gitlab_rails['gitlab_email_from'] = '[email protected]'
        gitlab_rails['gitlab_email_reply_to'] = '[email protected]'
        gitlab_rails['gitlab_email_display_name'] = 'GitLab'
    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'
    networks:
      gitlab-network:
        aliases:
          - gitlab.local
networks:
  gitlab-network:
    external: true
    name: gitlab-network
  • image: gitlab/gitlab-ce:latest: Sử dụng image GitLab Community Edition mới nhất từ Docker Hub
  • port: Mở các cổng cần thiết truy cập Gitlab (80 cho HTTP, 443 cho HTTPS, 22 cho SSH), cổng 22 được ánh xạ sang 2222 trên local để tránh xung đột.
  • volume: Giúp lưu trữ dữ liệu, cấu hình và logs của Gitlab bên ngoài container, đảm bảo dữ liệu không bị mất khi container bị xóa
  • enviroment: Thiết lập các biến môi trường cho Gitlab, bao gồm cổng SSH URL truy cập

Bước 2. Chạy Gitlab Container

Mở Terminal hoặc Command Prompt, di chuyển đến thư mục chưa file docker-compose.yaml chạy lệnh:

docker-compose up -d

Lệnh này sẽ tải image Gitlab, tạo và khởi chạy container trong chế độ nền (-d).

Bước 3. Truy cập vào Gitlab

Truy cập vào gitlab qua URL: http://localhost.
Trỏ file hosts để có thể truy cập vào gitlab qua địa chỉ: http://gitlab.local

2. Hướng dẫn cấu hình gitlab

1. Cấu hình lần đầu.
– Đổi mật khẩu cho tài khoản root. Khi đăng nhập lần đầu tiên vào gitlab, hệ thống sẽ yêu cầu bạn đặt lại mật khẩu cho tài khoản admin (mặc định là root)
– Truy cập vào giao diện Admin để quản lý gitlab. Hãy nhập vào biểu tượng cờ lê và có chứ Admin Area để vào giao diện Admin

Cấu hình gửi mail trong Gitlab

2. Quản lý Người dùng (Users)
– Tạo người dùng mới.

  • Trong mục Admin Area, Chọn Overview -> User
  • Nhấp vào nút New User

Gitlab sẽ tự gửi 1 link đổi mật khẩu đến cho user vào địa chỉ email của user.

  • Phân quyền cho người sử dụng (Regular hoặc Administrator)
  • Nhấp vào Create user

3. Quản lý Nhóm (Groups)

  • Mục đíchGroup trong GitLab là nơi để gom các project lại với nhau và quản lý quyền truy cập cho nhiều người dùng cùng một lúc.
  • Tạo nhóm mới:
    Trong Admin Area hoặc ở màn hình chính, Overview -> Group nhấp vào nút New group.

Nhập đường dẫn URL (group URL) và mô tả (description).

Thiết lập Visibility level (cấp độ hiển thị) cho nhóm:
Private: Chỉ những thành viên trong nhóm mới có thể xem.
Internal: Tất cả người dùng GitLab có thể xem.
Public: Bất kỳ ai cũng có thể xem, kể cả những người không có tài khoản.

Nhấp Create group.

  • Thêm thành viên vào nhóm:

Vào nhóm vừa tạo, chọn Group information > Members -> Manager Access
Nhấp vào Invite members.

Tìm kiếm và chọn người dùng bạn muốn thêm.

Chọn quyền truy cập (role) cho người dùng đó (ví dụ: DeveloperMaintainerOwner).
Nhấp Invite.

4. Quản lý Dự án (Projects)

  • Tạo dự án mới:
    Ở màn hình Admin Area, Overview -> Projects nhấp vào nút New project.

Chọn Create blank project.

  1. Điền tên dự ánmô tả và chọn Group mà dự án sẽ thuộc về.
  2. Chọn Visibility level tương tự như khi tạo nhóm.
  3. Tích chọn ‘Initialize repository with a README’ để tạo sẵn một file README.md.

Nhấp Create project.

Thêm thành viên vào dự án:
Vào dự án vừa tạo, chọn Project information > Members.

Hoặc vào Manage -> Members

Nhấp vào Invite members.

Tìm kiếm người dùng và phân quyền cho họ.
Nhấp Invite.

3. Cài đặt Gitlab Runner

Bước 1. Tạo file docker-compose.yaml cho Runner

version: '3.8'

  gitlab-runner:
    image: 'gitlab/gitlab-runner:latest'
    container_name: gitlab-runner
    restart: always
    depends_on:
      - gitlab
    volumes:
      - '/opt/gitlab-runner/config:/etc/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.sock'
    networks:
      - gitlab-network

networks:
  gitlab-network:
    external: true
    name: gitlab-network
  • depends_on: - gitlab: Đảm bảo container GitLab đã chạy trước khi GitLab Runner được khởi động.
  • volumes: Mount thư mục cấu hình và docker.sock để Runner có thể chạy các job Docker bên trong các container khác.
  • networks: Kết nối Runner vào cùng mạng với GitLab để chúng có thể giao tiếp với nhau. Tên mạng sẽ là tên-thư-mục-chứa-docker-compose-gitlab_gitlab-network.

Cài đặt

docker-compose up -d

Có thể gộp 2 file docker-compose.yaml làm 1 để chạy 1 lần cài cả gitlab và gitlab-runner.

Bước 2. Đăng ký Runner

Đăng nhập vào GitLab và đi đến: Admin Area > CI/CD > Runners.

Click vào Create Instance Runner

Tại đây, bạn nhập tags, Descriptions và bấm Create Runner

Chọn Platform và gõ lệnh theo hướng dẫn vào máy cài gitlab-runner

Tuy nhên gitlab-runner trong bài lab này được cài từ docker nên lệnh có sự thay đổi một chút như sau:

cd <thu muc chua file docker-compose>
docker-compose run --rm gitlab-runner register  --url http://gitlab.local  --token TOKEN_DUOC_TAO_RA

Đến đây là đã thành công đăng ký gitlab-runner

Tag:
Liên hệ