работающий compose с документацией

This commit is contained in:
Nikita Orlov 2019-08-22 21:47:08 +03:00
parent 0c73ed99f3
commit 344c7a3dec
5 changed files with 84 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.idea

4
Dockerfile Normal file
View File

@ -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

View File

@ -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
```

4
docker-compose.local.yml Normal file
View File

@ -0,0 +1,4 @@
services:
server:
ports:
- '88:8111'

55
docker-compose.yml Normal file
View File

@ -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: