Лучшая практика для привязки портов двух контейнеров gitlab - PullRequest
0 голосов
/ 17 октября 2019

Мы хотим, чтобы на нашем сервере работали два экземпляра gitlab. Один будет поддерживаться по старым причинам, а новый - для новых проектов.

Используя докер, мы смогли запустить первый устаревший экземпляр gitlab. Вот наш docker-compose.yml минус наши переменные env и имя хоста.

version: '3.7'
services:
    gitlab:
        container_name: 'gitlab_legacy'
        image: 'gitlab/gitlab-ce:latest'
        restart: 'always'
        ports:
            - '80:80'
            - '443:443'
            - '22:22'
        volumes:
            - '/srv/gitlab/config:/etc/gitlab'
            - '/srv/gitlab/logs:/var/log/gitlab'
            - '/srv/gitlab/data:/var/opt/gitlab'
networks:
    default:
        external:
            name: nginx-proxy

Мои знания в области сети ограничены, но я знаю, что, очевидно, это не будет работать для второго экземпляра, так как порты уже будут виспользовать. Будут возникать следующие ошибки:

Bind for 0.0.0.0:80 failed: port is already allocated Bind for 0.0.0.0:443 failed: port is already allocated Bind for 0.0.0.0:22 failed: port is already allocated

Так что мой вопрос в том, что является лучшим решением для сбора второго контейнера с док-станцией gitlab или любых будущих контейнеров,которая требует привязки к тем же портам?

1 Ответ

0 голосов
/ 17 октября 2019

Вы должны использовать прокси-сервер nginx, как описано в по этой ссылке

Тогда в вашем файле docker-compose часть портов будет изменена, как описано. Например:

ports:
    - '7080:80'
    - '7443:443'
    - '7022:22'

и для второго экземпляра:

ports:
    - '8080:80'
    - '8443:443'
    - '8022:22'
...