teamcity-in-docker/README.md
2020-01-27 15:39:41 +03:00

48 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Teamcity
Внутренний ТС, работающий в докере. _Запускаем в докере, чтобы запускать в докере!_
Подробнее о сервере, установке ТС, пользователе и правах в [Confluence](https://confluence.archive.systems/display/PRO/TeamCity).
## Запуск на продакшене
Переименовать в стандартное названия для docker-compose:
```bash
cp prod.yml docker-compose.yml
```
Запуск:
```bash
docker-compose build
docker-compose up -d --force-recreate
```
## Запуск на локальной машине в исследовательских целях
Для нашей версии (docker-compose 3.4) нужно доп. средства. Подробнее о подходе с мерджем файлов [тут](https://stackoverflow.com/a/55033027).
Ставим:
* [pipenv](https://docs.pipenv.org/en/latest/)
* [docker-compose addons](https://github.com/dnephin/compose-addons#docker-compose-addons)
Выполняем:
```bash
pipenv install
dcao-merge -o docker-compose.yml prod.yml local.yml
```
Запускаем (как для продакшена).
## Разные нюансы compose-файла
Самое главное, что:
1. прокидываем сокет демона ХОСТА в контеры агентов (docker in docker)
2. монтируем агентские рабочие папки из агентов на хост, чтобы демон (см. 1) мог увидеть файлы по относительным путям
[Нельзя использовать](https://stackoverflow.com/q/46013774) ```_``` или ```-``` в названии сервисов!
Нужно примаунтить директории, в которые чекаутится проект, чтобы избежать проблемы отсутствия файлов в первом докере (чтобы можно было запускать контейнеры внутри!). Первая ссылка - описание проблемы, вторая - солюшн.
* [Using docker compose inside a running container](https://github.com/docker/compose/issues/3918#issuecomment-483969527)
* [Unable to start any build step with Docker Wrapper on an agent from official docker image](https://youtrack.jetbrains.com/issue/TW-52017?_ga=2.31155327.1161243431.1566480946-540401972.1563195305)
Агенты должны делить сеть с хост-машиной, на которой стоит докер-демон, чтобы было возможно
обращаться к сервисам [по 127.0.0.1](https://stackoverflow.com/a/24326540).
При этом сеть host [надо указать при сборке](https://forums.docker.com/t/option-network-mode-host-in-docker-compose-file-not-working-as-expected/51682) (требует версию 3.4).