.gitignore | ||
docker-compose.yml.dist | ||
Dockerfile | ||
local.yml | ||
Pipfile | ||
Pipfile.lock | ||
prod.yml | ||
README.md |
Teamcity
Внутренний ТС, работающий в докере. Запускаем в докере, чтобы запускать в докере!
Подробнее о сервере, установке ТС, пользователе и правах в Confluence.
Запуск на продакшене
Переименовать в стандартное названия для docker-compose:
cp prod.yml docker-compose.yml
Запуск:
docker-compose build
docker-compose up -d --force-recreate
Запуск на локальной машине в исследовательских целях
Для нашей версии (docker-compose 3.4) нужно доп. средства. Подробнее о подходе с мерджем файлов тут.
Ставим:
Выполняем:
pipenv install
dcao-merge -o docker-compose.yml prod.yml local.yml
Запускаем (как для продакшена).
Разные нюансы compose-файла
Самое главное, что:
- прокидываем сокет демона ХОСТА в контеры агентов (docker in docker)
- монтируем агентские рабочие папки из агентов на хост, чтобы демон (см. 1) мог увидеть файлы по относительным путям
Нельзя использовать _
или -
в названии сервисов!
Нужно примаунтить директории, в которые чекаутится проект, чтобы избежать проблемы отсутствия файлов в первом докере (чтобы можно было запускать контейнеры внутри!). Первая ссылка - описание проблемы, вторая - солюшн.
- Using docker compose inside a running container
- Unable to start any build step with Docker Wrapper on an agent from official docker image
Агенты должны делить сеть с хост-машиной, на которой стоит докер-демон, чтобы было возможно обращаться к сервисам по 127.0.0.1.
При этом сеть host надо указать при сборке (требует версию 3.4).