From 344c7a3decd3d321ee48ac1bf9684bf8ad797b49 Mon Sep 17 00:00:00 2001 From: Nikita Orlov Date: Thu, 22 Aug 2019 21:47:08 +0300 Subject: [PATCH] =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E?= =?UTF-8?q?=D1=89=D0=B8=D0=B9=20compose=20=D1=81=20=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Dockerfile | 4 +++ REAME.md | 20 +++++++++++++++ docker-compose.local.yml | 4 +++ docker-compose.yml | 55 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 docker-compose.local.yml create mode 100644 docker-compose.yml 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: