在使用Docker Compose的情况下运行GitLab(包括GitLab容器注册表和GitLab页面)的WSL2支持
准备前的准备工作
由于需要使用 Docker Compose(V2),因此在 WSL 上进行以下准备。
# wsl-ubuntu
wsl --install --distribution Ubuntu-22.04
wsl --set-default Ubuntu-22.04
# Ubuntu-22.04がインストールできない場合、代わりに下記手順でインストールする
wsl --install
wsl --update
winget install 9PN20MSR04DW
wsl --set-default Ubuntu-22.04
# docker-desktop
winget install Docker.DockerDesktop
Docker Compose
容器编排
我们在collaborage的基础上进行了以下改进。
-
- GitLabバージョンを14.10にアップし、maven/コンテナレジストリに対応する
postgresも13.3に変更
GitLab-pagesを使用できるようにする
nexusを削除する
使う見込みのない機能を停止する(必要に応じて外付けする)
proxyをapacheではなくtraefikに変更、httpd.confなどの不要な構成ファイルを削除
docker-composeをcompose-spec対応形式に変更
# compose-spec
x-logging: &default-logging
logging:
options:
max-size: "10m"
max-file: "10"
services:
proxy:
container_name: proxy
image: traefik:2.7.0-rc2
restart: always
env_file: ./common.env
environment:
no_proxy: gitlab
command:
- --entrypoints.ssh.address=:22
- --entrypoints.web.address=:80
- --providers.docker
- --providers.docker.exposedByDefault=false
# [OPTION]prometheus監視エンドポイントを開く。不要であれば無効化してよい
- --entryPoints.metrics.address=:8082
- --metrics.prometheus=true
- --metrics.prometheus.entryPoint=metrics
# [OPTION]ダッシュボード。必ず本番環境では無効にすること
- --api.insecure=true
ports:
- "22:22"
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
<<: *default-logging
gitlab:
container_name: gitlab
image: gitlab/gitlab-ce:14.10.0-ce.0
restart: always
env_file: ./common.env
volumes:
- gitlab-config:/etc/gitlab
- gitlab-log:/var/log/gitlab
- gitlab-data:/var/opt/gitlab
depends_on:
- gitlab-db
hostname: 'gitlab.examlples.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.examlples.com/'
gitlab_rails['time_zone'] = 'Tokyo'
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_host'] = 'gitlab-db'
gitlab_rails['db_port'] = 5432
gitlab_rails['db_database'] = 'gitlab'
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = 'gitlab'
nginx['listen_port'] = 80
nginx['listen_https'] = false
nginx['proxy_set_headers'] = {
"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"
}
#[OPTION]gitlab container registryを有効化することで、コンテナをローカルに保有できる
registry_external_url 'http://registry.examlples.com'
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_api_url'] = "http://localhost:5000"
registry['enable'] = true
registry_nginx['enable'] = false
registry['registry_http_addr'] = "0.0.0.0:5000"
#[OPTION]pages機能を有効化することで、ブラウザでhtmlレポートが読めるようになる
#pagesを使用する場合、生IPは使用不可。
pages_external_url 'http://gitlab.examlples.com/'
gitlab_pages['enable'] = true
gitlab_pages['access_control'] = true
gitlab_pages['redirect_http'] = false
#proxy=>pagesのアクセス経路
pages_nginx['enable'] = false
gitlab_pages['external_http'] = ['0.0.0.0:8081']
#[OPTION]リソース軽減するために不要な機能を停止
gitlab_rails['gitlab_kas_enabled'] = false
grafana['enable'] = false
prometheus_monitoring['enable'] = false
prometheus['enable'] = false
alertmanager['enable'] = false
no_proxy: proxy
<<: *default-logging
labels:
- "traefik.enable=true"
# ssh(git)
- "traefik.tcp.services.gitlab-ssh.loadbalancer.server.port=22"
- "traefik.tcp.routers.gitlab-ssh.service=gitlab-ssh"
- "traefik.tcp.routers.gitlab-ssh.rule=HostSNI(`*`)"
- "traefik.tcp.routers.gitlab-ssh.entrypoints=ssh"
# http
- "traefik.http.services.gitlab.loadbalancer.server.port=80"
- "traefik.http.routers.gitlab.service=gitlab"
- "traefik.http.routers.gitlab.rule=Host(`gitlab.examlples.com`)"
- "traefik.http.routers.gitlab.entrypoints=web"
# http-registry
- "traefik.http.services.gitlab-registry.loadbalancer.server.port=5000"
- "traefik.http.routers.gitlab-registry.service=gitlab-registry"
- "traefik.http.routers.gitlab-registry.rule=Host(`registry.examlples.com`)"
- "traefik.http.routers.gitlab-registry.entrypoints=web"
# http-pages
- "traefik.http.services.gitlab-pages.loadbalancer.server.port=8081"
- "traefik.http.routers.gitlab-pages.service=gitlab-pages"
- "traefik.http.routers.gitlab-pages.rule=Host(`foogroupname.gitlab.examlples.com`) || Host(`projects.gitlab.examlples.com`)"
- "traefik.http.routers.gitlab-pages.entrypoints=web"
gitlab-db:
container_name: gitlab-db
image: postgres:13.3-alpine3.14
restart: always
environment:
POSTGRES_DB: gitlab
POSTGRES_USER: gitlab
POSTGRES_PASSWORD: gitlab
volumes:
- gitlab-db:/var/lib/postgresql/data
<<: *default-logging
gitlab-runner:
container_name: gitlab-runner
image: gitlab/gitlab-runner:ubuntu-v14.10.0
restart: always
volumes:
- gitlab-runner-config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
<<: *default-logging
extra_hosts:
- "gitlab.examlples.com:192.168.***.****"
- "registry.examlples.com:192.168.***.****"
volumes:
gitlab-config:
gitlab-log:
gitlab-data:
gitlab-db:
gitlab-runner-config:
客户端的hosts配置
将以下内容添加到hosts文件中。
192.168.***.**** gitlab.examlples.com registry.examlples.com foogroupname.gitlab.examlples.com projects.gitlab.examlples.com
进行。
docker compose up -d
确认执行结果
Traefik 仪表板



Git – 只需要一种选项

Gitlab执行者


容器注册表



页面
