Featured image of post Установка Bitbucket в docker-compose

Установка Bitbucket в docker-compose

Установка Bitbucket на Linux

Bitbucket — это сервис для хостинга кода и совместной работы. Другими словами: это Git репозиторий, со своими правами и разграничениями для команд.

Требования:

  • Система: Ubuntu
  • Установленный: Docker, docker-compose
  • CPU: 4 vcpu
  • RAM: 8 Gb
  • HDD: На ваше усмотрение (Рекомендуется 100 GB)

Шаг 1. Создаём структуру

1
sudo mkdir -p /opt/bitbucket/activate

И файл:

1
sudo nano /opt/bitbucket/docker-compose.yaml

Наполняем содержимым:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
version: '3.7'
services:
  nginx:
    container_name: nginx
    image: nginx:alpine
    ports:
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/certs:/etc/nginx/certs:ro
    depends_on:
      - bitbucket
    networks:
      - bitbucket-proxy

  bitbucket:
    container_name: bitbucket
    image: atlassian/bitbucket:8.16.3
    restart: unless-stopped
    volumes:
      - var:/var/atlassian/application-data/bitbucket
      - opt:/opt/atlassian/bitbucket
      - ./activate:/opt/atlassian/atlassian-agent/
    environment:
      - 'JVM_MINIMUM_MEMORY=2048m'
      - 'JVM_MAXIMUM_MEMORY=4096m'
      - 'SERVER_PROXY_NAME=bitbucket.domain.local'
      - 'SERVER_SECURE=true'
      - 'SERVER_SCHEME=https'
      - 'SERVER_PROXY_PORT=443'
      - 'TZ=Europe/Moscow'
    networks:
      - bitbucket-proxy

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_USER: bitbucket
      POSTGRES_PASSWORD: ChangeME
      POSTGRES_DB: bitbucketdb
      PGDATA: /data/postgres
    volumes:
      - ./postgres:/data/postgres
    ports:
      - "5432:5432"
    restart: unless-stopped
    networks:
      - bitbucket-proxy

networks:
  bitbucket-proxy:

volumes:
  var:
    external: false
  opt:
    external: false

Сохраняем, создаём директорию для nginx

1
mkdir -p /opt/bitbucket/nginx/certs

И файл конфигурации:

1
sudo nano /opt/bitbucket/nginx/nginx.conf

Наполняем:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
events {}

http {
  server {
    listen 443 ssl;
    server_name bitbucket.domain.local; #Меняйте на своё имя

    ssl_certificate     /etc/nginx/certs/selfsigned.crt;
    ssl_certificate_key /etc/nginx/certs/selfsigned.key;

    location / {
      proxy_pass http://bitbucket:7990;

      proxy_http_version 1.1;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto https;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Port 443;

      proxy_redirect off;
    }
  }
}

Далее создаём самоподписанные сертификаты:

Переходим в директорию:

1
cd /opt/bitbucket/nginx

Выполняем команду:

1
openssl req -x509 -nodes -days 365 -newkey rsa:2048  -keyout certs/selfsigned.key  -out certs/selfsigned.crt  -subj "/C=RU/ST=Moscow/L=My/O=ITZM/OU=TECH/CN=bitbucket.domain.local"

После переходим в директорию с docker-compose.yaml:

1
cd /opt/bitbucket/

И запускаем сервис:

1
docker-compose up -d

Шаг 2. Настройка в веб-интерфейсе

Выбираем язык. Русского Bitbucket нет, только English.

Также здесь выбираем Database - External
Вводим настройки для подключения, которым мы указали в docker-compose файле. Затем нажимаем Test/Next.

Шаг 3. Активация

Итак, мы подходим к моменту активации.

Процесс активации я подробно описал в Telegram.
Там же отвечаю на вопросы и обновляю инструкции при необходимости
Присоединяйся Telegram

Шаг 4. Завершаем настройку в веб-интерфейсе

После активации заходим используя данные нашего локального admin’a.
Создаём окружение и репозиторий для хранения кода.

Далее идёт интуитивно понятная настройка используя кнопку “Далее”. В настройках меняете адрес на https://bitbucket.domain.local

Установка завершена. Bitbucket готов к работе.

Информацию можно использовать в свободном доступе, с указанием ссылки на сайт
Telegram GitHub