Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/egregors/teamcity-docker-compose
Compose to create working TeamCity server with PostgreSQL and Agents
https://github.com/egregors/teamcity-docker-compose
ci docker docker-compose teamcity teamcity-server
Last synced: about 1 month ago
JSON representation
Compose to create working TeamCity server with PostgreSQL and Agents
- Host: GitHub
- URL: https://github.com/egregors/teamcity-docker-compose
- Owner: egregors
- License: gpl-3.0
- Created: 2016-06-24T09:43:44.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-11-25T03:33:02.000Z (about 4 years ago)
- Last Synced: 2023-08-10T20:38:46.305Z (over 1 year ago)
- Topics: ci, docker, docker-compose, teamcity, teamcity-server
- Language: Dockerfile
- Size: 485 KB
- Stars: 95
- Watchers: 9
- Forks: 48
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# teamcity-docker-compose
Compose to create working [TeamCity](https://www.jetbrains.com/teamcity/) server with PostgreSQL and Agents![state](https://img.shields.io/badge/state-stable-brightgreen.svg)
![ssl](https://img.shields.io/badge/HTTPs-traefik-brightgreen.svg)**This configuration use only official images:**
[teamcity server](https://hub.docker.com/r/jetbrains/teamcity-server/),
[teamcity agent](https://hub.docker.com/r/jetbrains/teamcity-minimal-agent/),
[postgres](https://hub.docker.com/_/postgres/),
[traefik](https://hub.docker.com/_/traefik)# How to use
Clone this repository or download the zip.
```
git clone https://github.com/egregors/teamcity-docker-compose.git
```## Configuration
All you need is to set a few ENV variables in the `example.env` file.
Set your Postgres username and password in `env.example`
Set your `VIRTUAL_HOST` and ACME credential (`LETSENCRYPT_HOST`, `LETSENCRYPT_EMAIL`)
**After all rename `env.example` to `.env`**
Don't push `.env` file in public repositories!
It's all. PostgreSQL already configured according to the
JetBrains [recommendations](https://confluence.jetbrains.com/pages/viewpage.action?pageId=74847395#HowTo...-ConfigureNewlyInstalledPostgreSQLServer)### HTTPs support
HTTPs entry point is enabled by default thanks to [traefik](https://traefik.io/)
If you don't need HTTPs support – use `docker-compose-nossl.yml`
## Build and setup
Next, build the images:
`make build`or
```
docker-compose -f docker-compose.yml build
```Now you may start up the service and continue configuring settings in Web Interface: `make up`
or
```
mkdir -p /opt/traefik && touch /opt/traefik/acme.json && chmod 600 /opt/traefik/acme.json
docker-compose -f docker-compose.yml up -d && docker-compose -f docker-compose.yml logs -f -t --tail=10
```After initialisation Web Interface will be available on `https://yourdockerhost/`
### Setup DB
Open `https://yourdockerhost/`
Set PostgreSQL as database type, download `JDBC driver`
![Alt text](raw/img/1.png?raw=true)
Configure DB connection:
![Alt text](raw/img/2.png?raw=true)
Authorize your Agent:
![Alt text](raw/img/3.png?raw=true)
Done, TeamCity ready to work.
## Scaling
Scaling your workers (agents) supported as well. Just use `docker-compose scale` command:
```
docker-compose scale teamcity-agent=3
```
**Keep in mind: currently, agents are stateless**## Backup / restore
You may use JetBrains way to [backup](https://confluence.jetbrains.com/display/TCD10/TeamCity+Data+Backup)
or [restore](https://confluence.jetbrains.com/display/TCD10/Restoring+TeamCity+Data+from+Backup) your server## Update
If you see a notice that a new version is available, you may update your TeamCity that way:
use `make` (set your compose file name in Makefile, by default it is `docker-compose.yml`)
```
make update
```or
```
# stop and remove old containers
docker-compose stop
docker-compose down --rmi all# build new version
docker-compose build --pull --no-cache# create and up new containers
docker-compose up -d
```After an update, you need to reauthorize your agents.
### Updating maintenance
Sometimes, during update you may get «maintenance is required» message instead of login page.
It's ok! To login in a maintenance mode you need to enter an authentication token. You may find it in the logs:
`docker-compose logs -f`Try to find something like this:
```
teamcity-server_1 | [TeamCity] Administrator can login from web UI using authentication token: 8755994969038184734
```## Platform-specific agents
You can use my preconfigured custom agents with already installed necessary dependencies
### Python 3 | Node.js 11, yarn 1.15
Agent [info](agents/python-node-yarn/README.md)
### Ruby | Bundle
Agent [info](agents/bundler-ruby/README.md)
### Node 14
Agent [info](agents/node-14/README.md)
## Contributing
Bug reports, bug fixes and new features are always welcome.
Please open issues and submit pull requests for any new code.