前言#
Docker Compose#
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
# 讓網頁上的 Clone 連結的ip顯示正確
external_url 'http://<區網ip>:12080'
nginx['listen_port'] = 80
nginx['listen_https'] = false
# 讓網頁上的 Clone 連結的ssh port顯示正確
gitlab_rails['gitlab_shell_ssh_port'] = 12022
prometheus_monitoring['enable'] = false
ports:
- "12080:80"
- "12443:443"
- "12022:22" # ssh改12022,避免衝突
volumes:
- /path/to/your/volume/gitlab/gitlab-config:/etc/gitlab
- /path/to/your/volume/gitlab/gitlab-logs:/var/log/gitlab
- /path/to/your/volume/gitlab/gitlab-data:/var/opt/gitlab
shm_size: '256m'
networks:
- gitlab-network
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
depends_on:
- gitlab
volumes:
- /path/to/your/volume/gitlab/gitlab-runner-config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
networks:
- gitlab-network
networks:
gitlab-network:
driver: bridge
預設創建了root帳號,預設密碼可以用以下指令查詢
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
註冊 Runner#
取得Gitlab Runner Token#
打開Gitlab網頁,登入管理員帳號,進入 Admin Area > CI/CD > Runners > Create instance runner
Tags輸入docker然後就可以Create runner
就會跳轉到下一個頁面,裡面就有一個Token,把它複製起來
設定 gitlab-runner#
docker exec -it gitlab-runner gitlab-runner register
進入互動問答:
- GitLab instance URL:按照上面設置填入Gitlab Server的URL即可(port也要對,這邊是12080)
- Registration token:剛剛透過Gitlab Admin網頁產生的token
- Executor:選擇docker
- Tags:docker
- Default Docker Image:docker:stable
修改 Runner 設定以支援Docker-out-of-Docker (DooD)#
編輯宿主機上的/path/to/your/volume/gitlab/gitlab-runner-config/config.toml
[[runners]]
# ... 其他設定 ...
executor = "docker"
[runners.docker]
tls_verify = false
image = "docker:stable"
privileged = true # 【重要】改成 true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
# 【重要】掛載 socket,讓 Job 容器也能呼叫宿主機 Docker
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
然後
docker restart gitlab-runner
設定完後回到gitlab網頁中應該就可以看到燈號變成綠色的了
最終效果#

