Я изучаю технологии CI, поэтому я решил создать Drone с Gitlab локально, используя Docker compose. Вот докер-compose.yml:Docker сочиняет с Drone и Gitlab, ошибки Gitlab «Включенный URI перенаправления».
version: "2"
services:
example_gitlab:
image: gitlab/gitlab-ce:latest
volumes:
- ./new-gitlab/srv/gitlab/config:/etc/gitlab
- ./new-gitlab/srv/gitlab/logs:/var/log/gitlab
- ./new-gitlab/srv/gitlab/data:/var/opt/gitlab
ports:
- "4443:443"
- "8000:80"
- "2222:22"
example_drone:
build: ./drone
volumes:
- /var/lib/drone/
- /var/run/docker.sock:/var/run/docker.sock
- ./drone/sqlite/drone.sqlite:/var/lib/drone/drone.sqlite
environment:
- DRONE_GITLAB=true
- DRONE_GITLAB_URL=http://0.0.0.0:8000
- DRONE_GITLAB_CLIENT=4b5292ffbe30e93713b57853c43194aa63d50c176516c8ffaa8b213f1bb1555b
- DRONE_GITLAB_SECRET=6088c59102511a418154197d415762a8768e0e2d6c9ad4bb9013f48d1df3b226
ports:
- "8080:8080"
Приложения начинают хорошо, и я создал приложение в gitlab с этими настройками:
Name: Drone
Redirect URI: http://0.0.0.0:8080/authorize
Я тогда взял идентификатор и секретный и добавили их в среду дронов. Все это прекрасно работает. Однако, когда я пытаюсь войти в gitlab от гула, я получаю:
Ошибка
Перенаправление URI включен не является действительным.
Понятия не имею, почему?
Первое, что выпрыгивает, - это то, что дрон работает по порту 8000 по умолчанию. Поэтому, если вы не выполняете пользовательскую сборку Drone, я ожидал, что drone будет работать на 8000, а не 8080. –
. Вторая вещь, которая выпрыгивает, - это URI переадресации: 'http: // 0.0.0.0/authorize', но вы подверглись воздействию порт 8080. Таким образом, URI переадресации, следовательно, должен быть 'http: //0.0.0.0: 8080/authorize'. Я полагаю, поскольку GitLab перенаправляет пользователя обратно на Drone –
Третье, что вы, возможно, захотите рассмотреть, это то, что drone и gitlab должен будет иметь возможность общаться с eachother через API доступа. Это будет невозможно с помощью 0.0.0.0, потому что 0.0.0.0 всегда относится к отдельному контейнеру. Поэтому, если drone пытается получить доступ к gitlab, используя 0.0.0.0:8000, он будет указывать на контейнер-манипулятор, а не на контейнер gitlab. По этой причине также рекомендуется использовать DNS или реальные IP-адреса. Рекомендуется также рассматривать их как отдельное приложение (и не комбинировать в одном докере). –