Skip to content

Instantly share code, notes, and snippets.

@denisxab
Created June 25, 2024 16:04
Show Gist options
  • Select an option

  • Save denisxab/2f35c8f91ed1207116760dab3f86bdd6 to your computer and use it in GitHub Desktop.

Select an option

Save denisxab/2f35c8f91ed1207116760dab3f86bdd6 to your computer and use it in GitHub Desktop.
Настройка собственного GitLab CI/CD сервера с помощью Docker Compose
version: "3.5"
services:
gitlab:
image: gitlab/gitlab-ce:latest
hostname: "localhost"
restart: unless-stopped
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost'
gitlab_rails['gitlab_shell_ssh_port'] = 8822
gitlab_rails['initial_root_password'] = 'CHANGEME123'
ports:
- "8000:80"
- "8822:22"
volumes:
- ./data/docker/gitlab/etc/gitlab:/etc/gitlab
- ./data/docker/gitlab/var/opt/gitlab:/var/opt/gitlab
- ./data/docker/gitlab/var/log/gitlab:/var/log/gitlab
networks:
- gitlab_net
dind:
image: docker:20-dind
restart: always
privileged: true
environment:
DOCKER_TLS_CERTDIR: ""
command:
- --storage-driver=overlay2
volumes:
- ./data/dind/docker:/var/lib/docker
networks:
- gitlab_net
depends_on:
- gitlab
gitlab-runner:
image: gitlab/gitlab-runner:alpine
restart: unless-stopped
environment:
- DOCKER_HOST=tcp://dind:2375
# command:
# # Скачаем docker чтобы можно было увидеть какие есть контейнеры
# - apk update
# - apk add --no-cache docker
# - addgroup gitlab-runner docker
volumes:
- ./config:/etc/gitlab-runner:z
- ./data/runner/cache:/cache
- /var/run/docker.sock:/var/run/docker.sock
networks:
- gitlab_net
depends_on:
- gitlab
register-runner:
restart: "no"
image: gitlab/gitlab-runner:alpine
environment:
- REGISTRATION_TOKEN=${REGISTRATION_TOKEN}
- CI_SERVER_URL=http://gitlab
command:
- register
- --non-interactive
- --locked=false
# Имя для runner, обычно название такое же как у проекта
- --name=${RUNNER_NAME}
- --executor=docker
# Url до своего gitlab сервера, тут он у нас в одной сети
- --url=http://gitlab
- --clone-url=http://gitlab
- --docker-image=docker:20-dind
- --docker-volumes=/var/run/docker.sock:/var/run/docker.sock
# Чтобы контейнре мог иметь сетевой доступ к контейнеру с gitlab
- --docker-network-mode=host
volumes:
- ./config:/etc/gitlab-runner:z
- ./data/dind/docker:/var/lib/docker
networks:
- gitlab_net
depends_on:
- dind
networks:
gitlab_net:
name: gitlab_net
@6elkir
Copy link

6elkir commented Mar 24, 2025

При запуске раннера валится с ошибкой:

Running with gitlab-runner 17.10.0 (67b2b2db)
  on Common t1_JsbSV, system ID: r_Z[2](http://*****/-/jobs/4#L2)q6neIE6mOj
Preparing the "docker" executor
00:12
Using Docker executor with image docker:20-dind ...
Using helper image:  registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_6[4](http://*****/-/jobs/4#L4)-v17.10.0
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-v17.10.0 ...
WARNING: Failed to pull image with policy "always": failed to register layer: ApplyLayer exit status 1 stdout:  stderr: lchown /usr: no such file or directory (manager.go:2[5](http://*****/-/jobs/4#L5)4:11s)
ERROR: Job failed: failed to pull image "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x8[6](http://*****/-/jobs/4#L6)_64-v17.10.0" with specified policies [always]: failed to register layer: ApplyLayer exit status 1 stdout:  stderr: lchown /usr: no such file or directory (manager.go:254:11s)

@alexkag
Copy link

alexkag commented May 15, 2025

При запуске раннера валится с ошибкой:

Running with gitlab-runner 17.10.0 (67b2b2db)
  on Common t1_JsbSV, system ID: r_Z[2](http://*****/-/jobs/4#L2)q6neIE6mOj
Preparing the "docker" executor
00:12
Using Docker executor with image docker:20-dind ...
Using helper image:  registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_6[4](http://*****/-/jobs/4#L4)-v17.10.0
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-v17.10.0 ...
WARNING: Failed to pull image with policy "always": failed to register layer: ApplyLayer exit status 1 stdout:  stderr: lchown /usr: no such file or directory (manager.go:2[5](http://*****/-/jobs/4#L5)4:11s)
ERROR: Job failed: failed to pull image "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x8[6](http://*****/-/jobs/4#L6)_64-v17.10.0" with specified policies [always]: failed to register layer: ApplyLayer exit status 1 stdout:  stderr: lchown /usr: no such file or directory (manager.go:254:11s)

Та же ошибка. Раннер поломан безнадежно.

@JbanS
Copy link

JbanS commented May 25, 2025

Была та же проблема с раннером. Помогло что-то из этого:

  1. После этого не заработало:
    Изменил в docker-compose.yml
  • CI_SERVER_URL=http://gitlab
    на
  • GITLAB_URL=http://"ip моего сервера":8000/
    и выполнил
    docker compose up --force-recreate -d
  1. После этого заработало:
docker compose stop register-runner
docker compose up -d register-runner

@Revenan7
Copy link

Revenan7 commented Jan 6, 2026

гайс, выпустили новую версию gitlab-runner, убрали команду register, используйте gitlab-runner register, то бишь
register-runner:
restart: "no"
image: gitlab/gitlab-runner:alpine
environment:
- REGISTRATION_TOKEN=glrt-RYRh6iL31dfOXqKbAvh3TG86MQpwOjEKdDozCnU6MQ8.01.170uysxvs
- CI_SERVER_URL=http://gitlab
command:
- gitlab-runner register
- --non-interactive
- --locked=false
# Имя для runner, обычно название такое же как у проекта
- --name="sq1"
- --executor=docker
# Url до своего gitlab сервера, тут он у нас в одной сети
- --url=http://gitlab
- --clone-url=http://gitlab
- --docker-image=docker:20-dind
- --docker-volumes=/var/run/docker.sock:/var/run/docker.sock
# Чтобы контейнре мог иметь сетевой доступ к контейнеру с gitlab
- --docker-network-mode=host
volumes:
- ./config:/etc/gitlab-runner:z
- ./data/dind/docker:/var/lib/docker
networks:
- gitlab_net
depends_on:

    + на винде траблы с DinD, вот фикс 
        dind:
  image: docker:20-dind
  restart: always
  privileged: true
  environment:
    DOCKER_TLS_CERTDIR: ""
  command: ["--storage-driver=overlay2"]
  volumes:
    - dind-data:/var/lib/docker
  networks:
    - gitlab_net
  depends_on:
    - gitlab
    
    
    вот фулл докер компоуз если в падлу :

version: "3.5"
services:
gitlab:
image: gitlab/gitlab-ce:latest
hostname: "localhost"
restart: unless-stopped
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost'
gitlab_rails['gitlab_shell_ssh_port'] = 8822
gitlab_rails['initial_root_password'] = 'XXXXXX'
ports:
- "8000:80"
- "8822:22"
volumes:
- ./data/docker/gitlab/etc/gitlab:/etc/gitlab
- ./data/docker/gitlab/var/opt/gitlab:/var/opt/gitlab
- ./data/docker/gitlab/var/log/gitlab:/var/log/gitlab
networks:
- gitlab_net

dind:
  image: docker:20-dind
  restart: always
  privileged: true
  environment:
    DOCKER_TLS_CERTDIR: ""
  command: ["--storage-driver=overlay2"]
  volumes:
    - dind-data:/var/lib/docker
  networks:
    - gitlab_net
  depends_on:
    - gitlab

gitlab-runner:
    image: gitlab/gitlab-runner:alpine
    restart: unless-stopped
    environment:
        - DOCKER_HOST=tcp://dind:2375
    # command:
    #     # Скачаем docker чтобы можно было увидеть какие есть контейнеры
    #     - apk update
    #     - apk add --no-cache docker
    #     - addgroup gitlab-runner docker 
    volumes:
        - ./config:/etc/gitlab-runner:z
        - ./data/runner/cache:/cache
        - /var/run/docker.sock:/var/run/docker.sock
    networks:
        - gitlab_net
    depends_on:
        - gitlab

register-runner:
    restart: "no"
    image: gitlab/gitlab-runner:alpine
    environment:
        - REGISTRATION_TOKEN=glrt-RYRh6iL31dfOXqKbAvh3TG86MQpwOjEKdDozCnU6MQ8.01.170uysxvs
        - CI_SERVER_URL=http://gitlab
    command:
        - gitlab-runner register
        - --non-interactive
        - --locked=false
        # Имя для runner, обычно название такое же как у проекта
        - --name="sq1"
        - --executor=docker
        # Url до своего gitlab сервера, тут он у нас в одной сети
        - --url=http://gitlab
        - --clone-url=http://gitlab
        - --docker-image=docker:20-dind
        - --docker-volumes=/var/run/docker.sock:/var/run/docker.sock
        # Чтобы контейнре мог иметь сетевой доступ к контейнеру с gitlab
        - --docker-network-mode=host
    volumes:
        - ./config:/etc/gitlab-runner:z
        - ./data/dind/docker:/var/lib/docker
    networks:
        - gitlab_net
    depends_on:
        - dind

networks:
gitlab_net:
name: gitlab_net

volumes:
dind-data:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment