user756366
user756366

Reputation: 477

Get TeamCity running on Docker

I'm brand new to both TeamCity and Docker. I'm struggling to get a Docker container with TeamCity running and usable on my local machine. I've tried several things, to no avail:

I installed Docker for Mac per instructions here. I then tried to run the following command, documented here, for setting up teamcity in docker:

    docker run -it --name teamcity-server-instance \
    -v c:\docker\data:/data/teamcity_server/datadir \
    -v c:\docker\logs:/opt/teamcity/logs \
    -p 8111:8111 \
    jetbrains/teamcity-server

That returned the following error: docker: Error response from daemon: Invalid bind mount spec "c:dockerdata:/data/teamcity_server/datadir": invalid mode: /data/teamcity_server/datadir.

Taking a different tack, I tried to follow the instructions here - I tried running the following command:

    docker run -it --name teamcity -p 8111:8111 sjoerdmulder/teamcity 

The terminal indicated that it was starting up a web server, but I can't browse to it at localhost, nor at localhost:8111 (error ERR_SOCKET_NOT_CONNECTED without the port, and ERR_CONNECTION_REFUSED with the port).

Since the website with the docker run command says to install Docker via Docker Toolbox, I then installed that at the location they pointed to (here). I then tried the

    docker-machine ip default

command they suggested, but it didn't work, error "Host does not exist: "default"". That makes sense, since the website said the "default" vm would be created by running Docker Quickstart and I didn't do that, but they don't provide any link to Docker Quickstart, so I don't know what they are talking about.

To try to get the IP address the container was running on, I tried this command

    docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

That listed the names of the running containers, each followed by a hyphen, then nothing. I also tried

    docker ps -a

That listed running contaners also, but didn't give the IP. Also, the port is blank, and the status says "exited (130) 4 minutes ago", so it doesn't seem like the container stayed alive after starting.

I also tried again with port 80, hoping that would make the site show at localhost:

    docker run -it --name teamcity2 -p 80:80 sjoerdmulder/teamcity

So at this point, I'm completely puzzled and blocked - I can't start the server at all following the instructions on hub.docker.com, and I can't figure out how to browse to the site that does start up with the other instructions.

I'll be very grateful for any assistance!

Upvotes: 2

Views: 3207

Answers (1)

Roman
Roman

Reputation: 20246

JetBrains now provides official docker images for TeamCity. I would recommend starting with those.

The example command in their TeamCity server image looks like this

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

That looks a lot like your first attempt. However, c:\docker\data is a Windows file path. You said you're running this on a mac, so that's definitely not going to work.

Once TeamCity starts, it should be available on port 8111. That's what -p 8111:8111 part of the command does. It maps port 8111 on your machine to port 8111 in the VM Docker for Mac creates to run your containers. ERR_CONNECTION_REFUSED could be caused by several things. Two most likely possibilities are

  1. TeamCity could take a little while to start up and maybe you didn't give it enough time. Solution is to wait.
  2. -it would start the TeamCity container in interactive mode. If you exit out of the terminal window where you ran the command, the container will also probably terminate and will be inaccessible. Solution is to not close the window or run the container in detached mode.

There is a good overview of the differences between Docker for Mac and Docker Toolbox here: Docker for Mac vs. Docker Toolbox. You don't need both, and for most cases you'll want to use Docker for Mac for testing stuff out locally.

Upvotes: 4

Related Questions