teamcity-in-docker/README.md

42 lines
2.8 KiB
Markdown
Raw 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
```
## Запуск на локальной машине в исследовательских целях
Для нашей версии (3.4) нужно доп. средства:
* [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
```
и запускаем. Подробнее [тут](https://stackoverflow.com/a/55033027).
## Разные нюансы compose-файла
Самое главное, что:
1. прокидываем сокет демона ХОСТА в контеры агентов (docker in docker)
2. монтируем агентские рабочие папки из агентов на хост, чтобы демон (см. 1) мог увидеть файлы по относительным путям
Нельзя использовать ```_``` или ```-``` в названии сервисов! [Docker Compose DNS issues with Team City Agent](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. [From inside of a Docker container, how do I connect to the localhost of the machine?](https://stackoverflow.com/a/24326540)
При этом сеть host надо указать при сборке (требует версию 3.4) [Option network_mode: host in docker compose file not working as expected](https://forums.docker.com/t/option-network-mode-host-in-docker-compose-file-not-working-as-expected/51682).