Build A TeamCity Server & Agent using Docker Compose

Create a TeamCity Server and Agent set-up using Docker Compose.

Introduction

TeamCity is a popular build management and continuous integration server from JetBrains. Downloads are available for multiple operating systems if you want to install yourself, but for a while now JetBrains has offered Docker images.

The following demonstrates a Docker Compose file which when run, downloads and deploys both the server and agent images.

Set-up Directories

Open a command / terminal and create a local directory to store the TeamCity data & log directories referenced in the Docker Compose file. Depending on your OS you'll need to modify these to suit.

mkdir c:\teamcity
mkdir c:\teamcity\server
mkdir c:\teamcity\server\data
mkdir c:\teamcity\server\logs
mkdir c:\teamcity\agent

Create Docker Compose yaml file

Create the following docker-compose.yaml file in your TeamCity directory. You should notice under services\tcs\volumes and services\tca\volumes the key/values which map the data & logs from the container volumes to your local (host) directories created above.

version: "3"
services:
  tcs:
    image: jetbrains/teamcity-server
    container_name: teamcity-server
    ports:
      - "8111:8111"
    volumes:
      - c:\teamcity\server\data:/data/teamcity_server/datadir
      - c:\teamcity\server\logs:/opt/teamcity/logs
  tca:
    image: jetbrains/teamcity-agent
    depends_on:
      - tcs
    container_name: teamcity-agent
    environment:
      SERVER_URL: "http://tcs:8111/"
    volumes:
      - c:\teamcity\agent:/data/teamcity_agent/conf

Run installer with Docker Compose

From the command / terminal navigate to your TeamCity directory and run docker-compose up. Wait a few minutes for Docker to download and deploy the images, then navigate to http://localhost:8111/ to proceed with TeamCity server installation.

Installation

Proceed through the installation steps, setting up a database connection and creating an admin account.

Once done, return to the command / terminal and notice that the agent will now try and connect to the up-and-running server. This may take a few minutes, and the agent may try to reconnect a number of times before succeeding.

Now that the agent has successfully connected to the server, it should show up in the agents tab.

Click the authorize button and the agent should now move to the connected tab.

You should now be able to create and run build configurations. See TeamCity documentation for further information.

To stop TeamCity server and agent, return to the command / Terminal and press Ctrl-C.

See docs for further information about features and usage of Docker and Docker Compose.