مصطفی کاظمی
مصطفی کاظمی
خواندن ۳ دقیقه·۳ سال پیش

نصب GitLab با Docker

به عنوان یه توسعه‌دهنده به احتمال زیاد با Git کار کردید و احتمالا کدتون رو، روی یکی از پلتفرم‌های مشهور مثل GitHub یا GitLab یا Bitbucket قرار دادید؛ حالا ممکنه به دلایلی نخواید کدتونو توی اینترنت و روی این پلتفرم‌ها قرار بدید؛ مثلا ممکنه حجم repositoryتون زیاد باشه یا تحریم اذیتتون کنه یا ...

خوبی چندتا از این پلتفرم‌ها (مثل GitLab و Bitbucket) اینه که اینا رو میشه به صورت محلی روی سیستم یا سرورهای خودتون (اصطلاحا on-premise) نصب کرد؛ توی تجربه‌ی شخصیم، Bitbucket خیلی امکاناتش کامل هستش اما نیاز به لایسنس داره و پیدا کردن راه دور زدن لایسنسش توی نسخه‌های جدیدش یه خورده سخت شده؛ در مقابل GitLab با امکانات تقریبا کافی به صورت رایگان قابل استفاده هستش؛ البته اون هم یه سری امکانات پولی داره که اگه لایسنسشو تهیه کنید می‌تونید از اون امکانات استفاده کنید؛ برای مقایسه نسخه‌های GitLab می‌تونید به این لینک یه سری بزنید.

نسخه رایگان GitLab معمولا، اکثر نیازهامون رو بر طرف می‌کنه؛ بنابراین تصمیم گرفتیم تو این مقاله در مورد نصب GitLab صحبت کنیم.


نصب GitLab با استفاده از داکر

پیش‌نیازها

فرض بر اینه که می‌خوایم GitLab رو روی اوبونتو سرور بریزیم و دایره لغتمون یه مقدار لینوکسی خواهد بود؛ البته روی سیستم‌عامل‌های دیگه به جز مسیرها و بعضی از دستورها فرق دیگه‌ای وجود نداره.

از اونجایی که می‌خوایم GitLab رو با داکر نصب کنیم لازمه روی سیستممون داکر و داکر کامپوز نصب باشه؛ توی این مقاله گفتم چجوری میشه داکر و داکر کامپوز رو روی اوبونتو نصب کرد.

همچنین چون می‌خوایم ایمیج‌های GitLab رو از dockerhub دانلود کنیم لازمه از تحریم‌شکن استفاده کنیم که توی این مقاله فعالسازی شکن توی اوبونتو رو توضیح دادم.

راستی حداقل رم مورد نیاز ۴ گیگ هستش؛ دیسک هم بعد از نصب روی اوبونتو سرور خام حدود ۱۰ گیگ پر میشه.

نصب GitLab

خب اول از همه برا اینکه خیلی درگیر sudo و دسترسی و اینا نشیم با زدن دستور پایین دسترسی root بگیریم:

sudo su

حالا داخل پوشه opt یه پوشه برا GitLab بسازیم:

cd /opt mkdir -p gitlab/app cd gitlab

بعد یه فایل docker-compose.yaml بسازیم و محتویاتشو این قرار بدیم:

version: &quot3.9&quot services: gitlab: container_name: 'gitlab' image: 'gitlab/gitlab-ee:latest' restart: unless-stopped hostname: 'gitlab.local' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://gitlab.local:8443' gitlab_rails['gitlab_shell_ssh_port'] = 2224 gitlab_rails['lfs_check'] = false # Add any other gitlab.rb configuration here, each on its own line ports: - '8443:8443' - '2224:22' volumes: - '/opt/gitlab/app/config:/etc/gitlab' - '/opt/gitlab/app/logs:/var/log/gitlab' - '/opt/gitlab/app/data:/var/opt/gitlab' logging: driver: &quotjson-file&quot options: max-size: &quot1g&quot

بعد هم دستور پایین رو بزنیم تا GitLab اجرا بشه:

docker compose up -d

اگه همه چی میزون باشه برای بار اول ایمیج GitLab دانلود میشه:

بعد با زدن این دستور می‌تونیم وضعیت کانتینتر gitlab رو ببینیم:

watch docker ps

که بعد از دانلود تو وضعیت starting قرار می‌گیره:

ممکنه بعد از چند دقیقه یه بار کانتینر ریست بشه؛ طبیعیه... تا healthy شدنش صبر کنید.

بعد از healthy شدن کانتینر می‌تونیم با وارد کردن آدرس سرورمون (مثلا https://192.168.230.128:8443) صفحه GitLab رو ببینیم (توجه کنید که GitLab رو روی پورت 8443 بالا آوردیم):

https://IP_OR_DOMAIN:8443
https://IP_OR_DOMAIN:8443

یورز پیش‌فرض root هستش؛ پسوردشم با این دستور می‌تونیم ببینیم:

cat /opt/gitlab/app/config/initial_root_password

خب خسته نباشید؛ GitLabمون نصب شد.

چندتا نکته در مورد docker-compose.yaml بالا

  1. ایمیج رو gitlab-ee انتخاب کردیم تا اگه بعدا خواستیم لایسنس بگیریم خیلی راحت بتونیم نسخه رایگانمونو به نسخه پولی تغییر بدیم.
  2. هاست‌نیم (hostname) و external_url توی قسمت environment رو باید دامنه سرور قرار بدیم؛ اینجا فرض بر اینه که دامنه سرور gitlab.local هستش.
  3. پورت وب و ssh رو به ترتیب تغییر دادیم به 8443 و 2224؛ خواستید با پورت مورد نظرتون replaceشون کنید.
  4. توی repositoryهای بزرگ که خیلی سنگین از LFS استفاده می‌کنن ممکنه فیچر lfs_check اذیت بکنه که غیرفعالش کردیم.
  5. از اونجایی که GitLab وحشتناک لاگ میندازه (جایی در عرض چند روز حدود ۲۰۰ گیگ لاگ تولید کرده بود) حجم لاگ رو در قسمت logging محدود به ۱ گیگ کردیم.

برای توضیحات بیشتر می‌تونید به صفحه GitLab (اینجا) مراجعه کنید؛ من هم در قسمت نظرات یا ایمیل mkay1375@gmail.com در خدمت هستم.

gitlabdockeron premise
توسعه‌دهنده جاوا و اندکی جاوا اسکریپت | در تپسی
شاید از این پست‌ها خوشتان بیاید