# 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).