diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a3dc863 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM jetbrains/teamcity-agent + +RUN curl -sL https://deb.nodesource.com/setup_11.x | bash - \ + && apt-get install -y nodejs build-essential diff --git a/REAME.md b/REAME.md index f705741..38b4b77 100644 --- a/REAME.md +++ b/REAME.md @@ -1,3 +1,23 @@ # Teamcity +Запискаем докер, когда запускаем докер! + Внутренний ТС. Подробнее в (Confluence)[https://confluence.archive.systems/display/PRO/TeamCity] + +## Tl;dr +Самое главное, что: +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) + +## Запуск на локальной машине в исследовательских целях +Для этого можно глянуть в [Multiple Compose files](https://docs.docker.com/compose/extends/#understanding-multiple-compose-files) или просто сделать: +```bash +docker-compose -f docker-compose.yml -f docker-compose.local.yml up -d +``` \ No newline at end of file diff --git a/docker-compose.local.yml b/docker-compose.local.yml new file mode 100644 index 0000000..c6092bd --- /dev/null +++ b/docker-compose.local.yml @@ -0,0 +1,4 @@ +services: + server: + ports: + - '88:8111' \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d50cf24 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,55 @@ +version: '3' + +services: + server: + image: 'jetbrains/teamcity-server' + volumes: + - '/var/data/teamcity/server:/data/teamcity_server/datadir' + - '/var/log/teamcity/server:/opt/teamcity/logs' + ports: + - '80:8111' + # container_name: 'teamcity-server-instance' + restart: always + networks: + - net + + agent-white: + build: . + volumes: + - '/var/data/teamcity/agent-white:/data/teamcity_agent/conf' + - '/var/run/docker.sock:/var/run/docker.sock' + - '/opt/buildagent/work:/opt/buildagent/work' + - '/opt/buildagent/temp:/opt/buildagent/temp' + environment: + SERVER_URL: http://server:8111 + AGENT_NAME: 'White' + #container_name: 'teamcity-agent-white' + restart: always + depends_on: + - server + links: + - server + networks: + - net + + agent-black: + build: . + volumes: + - '/var/data/teamcity/agent-black:/data/teamcity_agent/conf' + - '/var/run/docker.sock:/var/run/docker.sock' + - '/opt/buildagent/work:/opt/buildagent/work' + - '/opt/buildagent/temp:/opt/buildagent/temp' + environment: + SERVER_URL: http://server:8111 + AGENT_NAME: 'Black' + #container_name: 'teamcity-agent-black' + restart: always + depends_on: + - server + links: + - server + networks: + - net + +networks: + net: