ติดตั้ง GitLab CE และ GitLab Runner บน Docker

Install GitLab CE and GitLab Runner on Docker

Nopnithi Khaokaew (Game)
3 min readApr 22, 2020

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

บอกก่อนนะครับ คำว่า “GitLab” ตลอดบทความของผม ผมจะหมายถึง self-hosted GitLab นะครับ ไม่ใช่ GitLab.com (Saas) แต่อย่างใด

ภาพรวมของสิ่งที่เราจะทำ

  1. ติดตั้ง GitLab (CE) บน Docker
  2. ติดตั้ง GitLab Runner บน Docker และ Register เพื่อใช้งาน

สิ่งที่เราต้องเตรียมให้พร้อมก่อน

  • ขึ้น Ubuntu Server 18.04 จำนวน 2 ตัว (ผมใช้เป็น VM นะ) ซึ่งอยู่ใน network เดียวกัน พร้อมติดตั้ง Docker บนทั้งสองตัวให้เรียบร้อยครับ
  • กำหนด IP ของ gitlab-ce เป็น IP 172.16.1.200/24
  • กำหนด IP ของ gitlab-runner เป็น IP 172.16.1.201/24
  • แนะนำว่าที่เซิร์ฟเวอร์ gitlab-ce ให้เปลี่ยน SSH port ที่ใช้ remote จาก 22 ไปเป็นอย่างอื่น เพราะเดี๋ยวเราจะเอา port 22 มาใช้กับ GitLab แทนครับ
  • ถ้าใครมีปัญหาตอน register ตัว runner ผมแนะนำว่าให้ uninstall Docker ออกก่อนแล้วติดตั้งใหม่โดยทำตามนี้ครับ https://docs.docker.com/engine/install/ubuntu

— — — — — — — — — — — — — — — — — — — —

1. ติดตั้ง GitLab CE บน Docker (บน gitlab-ce)

สร้าง Enviroment Variable ชื่อ GITLAB_HOME

โดยชี้ไปที่ directory ที่เราต้องการเก็บ GitLab (ผมไว้บน /root เลย)

export GITLAB_HOME=$HOME

เริ่ม Run Image ของ GitLab CE

ตรงนี้ใครจะเปลี่ยน port ก็เปลี่ยนนะครับ ตรง argument ชื่อ publish นั่นแหละ เรียงไปเลยตั้งแต่ HTTPS, HTTP และ SSH เช่น ถ้าผมต้องการเปลี่ยน HTTP เป็น port 8080 ก็จะแก้เป็น 8080:80 ครับ

sudo docker run --detach \
--hostname 172.16.1.200 \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/gitlab/config:/etc/gitlab \
--volume $GITLAB_HOME/gitlab/logs:/var/log/gitlab \
--volume $GITLAB_HOME/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

เมื่อกด enter ไป Docker จะทำการ pull image แล้วก็ run ครับ ตรงนี้ต้องรอสักประมาณ 1 นาทีกว่าจะเข้าใช้งานผ่าน browser ได้

สังเกตตรงบรรทัดที่ argument เป็น volume มั้ยครับ นั่นคือ path ที่ GitLab จะเก็บไฟล์ต่าง ๆ ไว้บนเครื่องของเรา ซึ่งก็คือโฟลเดอร์ gitlab ภายใต้ project ของเรานั่นเอง

เปิด Browser เพื่อเข้าใช้งาน GitLab ของเราได้เลย

http://172.16.1.200

— — — — — — — — — — — — — — — — — — — —

2. ติดตั้ง GitLab Runner บน Docker (บน gitlab-runner)

เช็คข้อมูลที่ใช้สำหรับ Register GitLab Runner

บน GitLab ให้ใช้ root account เข้ามาที่หน้านี้ก่อน

http://172.16.1.200/admin/runners

จากนั้นจะเห็นข้อมูลแบบนี้

ทั้ง URL และ token เนี่ยแหละที่เราจะเอาไปใช้ในการ register

Run ตัว GitLab Runner ขึ้นมา

กลับไปที่ gitlab-runner แล้วใช้ command นี้

docker run -d --name gitlab-runner1 -v /var/run/docker.sock:/var/run/docker.sock -v /srv/gitlab-runner1/config:/etc/gitlab-runner --rm gitlab/gitlab-runner

สังเกตว่าตรงตัวหนาจะเป็น gitlab-runner1 นะครับ ที่ผมใส่ 1 ไปเผื่อว่าเราอยากจะมี runner มากกว่า 1 ตัว ก็ใช้วิธีเดียวกันนี่แหละในการ register

Register GitLab Runner เข้ากับ GitLab CE

docker exec -it gitlab-runner1 gitlab-runner register

เมื่อ enter ไป ก็ทำตาม step เลยครับ ของผมเลือกแบบนี้

  • URL = http://172.16.1.200/
  • Token = RN1sfj8zGEyskcJKDkyp
  • Description: runner1
  • Tags: (ไม่ใส่)
  • Executor: docker
  • Docker image: ruby:2.6

เป็นอันเสร็จสิ้นครับ เราจะได้หน้าตาประมาณนี้

คราวนี้เราก็จะมี GitLab ไว้ใช้งานแล้ว แถมมี runner ไว้ทำ CI/CD pipeline ด้วย

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

--

--

Nopnithi Khaokaew (Game)
Nopnithi Khaokaew (Game)

Written by Nopnithi Khaokaew (Game)

Cloud Solutions Architect & Hobbyist Developer | 6x AWS Certified, CKA, CKAD, 2x HashiCorp Certified (Terraform, Vault), etc.

No responses yet