設定ファイルなどを git 管理するために GitLab を dockerコンテナ として構築します。
情報が漏洩するリスクを低減するのが目的です。
dockerホストは ubuntu24.04 です。
GitLab は 会社でつかってますが、 プライベートで使うのは初めてです。
会社のは 専門チームが構築・運用していて 私はユーザとして使っています。
今回参考にする 記事は ↓です。
最初にデータの永続化ポイントを作成します。
teto@antlers:/var/opt$ sudo mkdir gitlab
[sudo] teto のパスワード:
teto@antlers:/var/opt$ ls
gitlab
teto@antlers:/var/opt$ cd gitlab/
teto@antlers:/var/opt/gitlab$ pwd
/var/opt/gitlab
この永続化ポイントを 環境変数に 登録します。
export GITLAB_HOME=/var/opt/gitlab
echo export GITLAB_HOME=/var/opt/gitlab >>~/.bashrc
次に docker-compose.yml を 作成します。
プライベートIPなので DNS の設定がないので 直接IPアドレスを書きます。
ポート番号は ちょっとずらしておきます。
参考にした ページには version行が あったけど
teto@antlers:~/gitlab-docker$ docker compose build
WARN[0000] /home/teto/gitlab-docker/docker-compose.yml: `version` is obsolete
って 表示されたので 書かないことにしました。
services:
web:
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: '10.11.7.121'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://10.11.7.121:8000'
gitlab_rails['gitlab_shell_ssh_port'] = 8022
ports:
- '8000:8000'
- '8022:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '256m'
teto@antlers:~/gitlab-docker$ sudo docker compose pull
[sudo] teto のパスワード:
WARN[0000] The "GITLAB_HOME" variable is not set. Defaulting to a blank string.
WARN[0000] The "GITLAB_HOME" variable is not set. Defaulting to a blank string.
WARN[0000] The "GITLAB_HOME" variable is not set. Defaulting to a blank string.
[+] Pulling 10/10
? web Pulled 69.3s
? 3c645031de29 Pull complete 1.0s
? 801c3ec7703e Pull complete 0.6s
? a4466746bd11 Pull complete 1.4s
? 137ac216511f Pull complete 1.4s
? 2440d366ccbf Pull complete 1.6s
? 96903552f0e1 Pull complete 1.9s
? c0f255011886 Pull complete 1.9s
? 417c5452b7d2 Pull complete 2.2s
? 2605a8d3a84d Pull complete 20.8s
あれ? さっき 設定した 環境変数が 見えていないようです。
そうか sudo したらみえないよね。 -E オプションつけよう。
teto@antlers:~/gitlab-docker$ sudo -E docker compose pull
[+] Pulling 1/1
? web Pulled
dockerコマンドを 実行できるようにしたほうが あとあと楽だな。ということで
sudo usermod -a -G docker teto
して dockerを再起動して
teto@antlers:~/gitlab-docker$ docker compose pull
[+] Pulling 1/1
? web Pulled
さて 起動します。
teto@antlers:~/gitlab-docker$ docker compose up -d
[+] Running 2/2
? Network gitlab-docker_default Creat... 0.1s
? Container gitlab-docker-web-1 Start... 0.1s
初期パスワードを 取得しないといけません。
teto@antlers:~/gitlab-docker$ docker exec -it gitlab-docker-web-1 grep 'Password
:' /etc/gitlab/initial_root_password
Password: QFhapyAYP2TgCB0pa0CGTJeqBun2S/RlZ9DQhd1ruVo=
設定したURL にアクセスすると
ちょっと待ってね 画面が ひょうじされ そのうち ログイン画面が ひょうじされる。
ここに ユーザ名 root パスワードは 上で 取得したパスワードを入力してログインした。
さいしょに することは rootパスワードの 変更だ。
アバターアイコンを くりっくして Edit profile を クリックし、
Password を クリックすると パスワードが変更できる。
初期パスワードと 新しいパスワードを入力すると 変更できる。
変更が 成功したら ログイン画面に もどるので 新しい パスワードでログインしなおす。
つぎに 作業用の アカウントを作成する。
左下にある Admin Area から 管理者用の画面に 移動して
パスワードもてきとうなのを 設定して
ログインしたら パスワード変更画面になりました。
ここまで設定できたら 運用開始でいいかな。
追記
SMTPサーバの 設定を かかないと ユーザの メールアドレスを変更できないことが判明した。
自分しかつかわないので SMTP無しで いいかな。
ということで コンテナの 外で 作業します。
sudo vi /var/opt/gitlab/config/gitlab.rb
gitlab.rb に 次の行を 追加して
gitlab_rails['smtp_enable'] = false
次のコマンドで 設定を 読み込みます。
docker exec -it gitlab-docker-web-1 gitlab-ctl reconfigure
ユーザのメールアドレス変更が メール無しで 実施できました。
次ですが、
設定を 変更したら ターゲットに 展開して 適用するみたいなことを 実現したいな。
GitLab Runner とか ansible つかえば できるかなぁ
それはまた 別の話ですね。