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
@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