Public Repository

Last pushed: a month ago
Short Description
TeamCity Server - Powerful Continuous Integration and Continuous Delivery out of the box
Full Description

This is an official JetBrains TeamCity server image.
The image is suitable for production use and evaluation purposes.

Current Status

Experimental image, feedback is welcome.

How to Use This Image

Pull the image from the Docker Hub Repository

docker pull jetbrains/teamcity-server

Use the following command to start a container with TeamCity server

docker run -it --name teamcity-server-instance  \
    -v <path to data directory>:/data/teamcity_server/datadir \
    -v <path to logs directory>:/opt/teamcity/logs  \
    -p <port on host>:8111 \
    jetbrains/teamcity-server

where
<path to data directory> is the host machine directory to serve as TeamCity Data Directory where TeamCity stores project settings and build results. Pass empty directory for the brand new start. When the mapping is not set, you will lose all the TeamCity settings on container shutdown.
<path to logs directory> is the host machine directory to store TeamCity server logs. The mapping can be omitted, but then the logs will be lost on container shutdown which will make issues investigation impossible.

TeamCity stores set of users and build results in an SQL database in addition to the Data Directory.
By default TeamCity server uses an internal database stored on the file system under the data directory. However, production use requires external database.

To use the server for production, make sure to review and apply the recommendations.

You will need at least one TeamCity agent to run builds. Check jetbrains/teamcity-agent image.

Additional Commands

When required to pass additional environment variables to the server process, use regular -e option. e.g. to pass TEAMCITY_SERVER_MEM_OPTS environment variable, use:

docker run -it --name teamcity-server-instance   \
       -e TEAMCITY_SERVER_MEM_OPTS="-Xmx2g -XX:MaxPermSize=270m -XX:ReservedCodeCacheSize=350m" \
       -v <path to data directory>:/data/teamcity_server/datadir  \
       -v <path to log directory>:/opt/teamcity/logs   \
       -p <port on host>:8111 \
       jetbrains/teamcity-server

To run maintainDB script (e.g. for server backup) please stop your running container and execute the following command from your host:

docker run -it --name teamcity-server-instance  \
    -v <path to data directory>:/data/teamcity_server/datadir  \
    -v <path to log directory>:/opt/teamcity/logs  \
    -p <port on host>:8111 \
    jetbrains/teamcity-server \
    "/opt/teamcity/bin/maintainDB.sh" "backup"

Be sure to keep all the local system paths the same with the main server start command.

Upgrading TeamCity

Make sure to check generic TeamCity upgrade instructions.
If you made no changes to the container, you can just stop the running container, pull newer version of the image and the server in it via the usual command.
If you changed the image, you will need to replicate the changes to the new TeamCity server image. In general, use Docker common sense in order to perform the upgrade.

License

The image is available under the TeamCity license.
TeamCity is free for perpetual use with the limitation of 20 build configurations (jobs) and 3 agents. Licensing details.

Feedback

Report issues of suggestions into official TeamCity issue tracker.

Under the Hood

This image is built on top of TeamCity base image which includes:

  • ubuntu:xenial
  • Oracle JRE 8 Update 121, 64 bit
  • curl, unzip

Limitations

The image is based on JRE 8 Update 77 with limited Java tool set available due to Oracle license policy. If you would need Java diagnostics tools (e.g. to take a memory dump or take a thread dump for the TeamCity process), install JDK 8 Update 77, 64 bit into the container over the existing Java installation.

Other TeamCity Images

Dockerfile source

https://github.com/JetBrains/teamcity-docker-server

Docker Pull Command
Owner
jetbrains

Comments (33)
shkate
20 days ago

Hi kristpet,

We recommend to do it using another container as a reverse proxy. TeamCity setup details for this case you can find here: https://confluence.jetbrains.com/display/TCD10/How%20To...#HowTo...-SetUpTeamCitybehindaProxyServer

Regards,
Kate

kristpet
21 days ago

Are there instructions for how to configure HTTPS? Or has anyone successfully done so who is willing to share instructions?

ekiwok
2 months ago

What I got when I run this server:

INFO: No Spring WebApplicationInitializer types detected on classpath

shkate
2 months ago

Hi kiranbnaik,
We are sorry for delay with answer. We missed the comment somehow. Looks like you forgot to map the port, should be - docker run -it -p 8111:8111 jetbrains/teamcity-server. More details about 'run' command options you can find above in image description section.

Regards,
Kate

rvkdocker
3 months ago

Hi All
I have query
I need to " Identify the relevant meta-data for docker images and publish the build meta data for Docker Images " - basically i have to publish the relevant metadata of a Docker Image in CI process of Build generation. Can any one help me in this regard ? DOes any teamcity plugin exists for the same? Thanks in Advance

kiranbnaik
3 months ago

Hi ,

I am able to pull this docker image successfully using "docker pull jetbrains/teamcity-server" but after running the below command it says "Startup confirmation is required. Open TeamCity web page in the browser". I am trying to access teamcity webpage using http protocol and port as 8111, but its not working... I dont see any error during startup and I am using correct IP address.
Is this correct port, 8111?

docker run -i -t jetbrains/teamcity-server

kazim2476
4 months ago

That is cool but based on the every new dependency we have to take care of two things

  1. Create either a new team city docker image or create a new agent.
  2. License agreement
    http://blog.takipi.com/running-java-on-docker-youre-breaking-the-law/

The cool thing is that you can create light weight agents and use them according to code base and its dependencies; team city is going to build.
.

shkate
6 months ago

We have no plans to publish Dockerfile for jetbrains/teamcity-base image as it relies on our own procedure to build image with Oracle's Java. But you can build your own base image and tag it as 'teamcity-base'. Details description you can find here: https://github.com/JetBrains/teamcity-docker-server.

jredl
6 months ago

These images ultimately pull from teamcity-base:latest. Does jetbrains have any plans to release this Dockerfile? I ask, as I would like to change the linux distribution this is running on as I'm having issues with Wily.

vsrecio
7 months ago

Hi, How can i run this images on windows server 2016?