TeamCity无法连接在Docker中运行的MySQL

时间:2018-12-05 09:19:25

标签: mysql teamcity

我使用以下命令在docker中启动MySQL:

docker run --name mysql-for-teamcity \

-e MYSQL_ROOT_PASSWORD=FAKE-ROOT-PW\

-v ~/MySQL/var_lib_mysql:/var/lib/mysql \

-p 3306:3306 \

-p 33060:33060 \

-it mysql

但是TeamCity无法连接MySQL,错误消息是: enter image description here

我可以使用以下命令在终端中连接MySQL:

mysql -u root --protocol=tcp -p

还创建了数据库“ teamcity”。

我的环境:

  • Mac OS X 10.14.1
  • Docker Desktop 2.0.0.0-mac81(29211)
  • TeamCity和MySQL在单独的Docker容器中运行
  • 两个Docker images标签都是最新的

1 个答案:

答案 0 :(得分:0)

原因是TeamCity和MySQL在单独的容器中运行,因此当我为TeamCity指定“ 127.0.0.1”时,它不可能连接到MySQL。因为它们根本不在同一主机上运行。

该解决方案使用Docker Compose,它默认情况下为容器设置了本地网络。

第1步:在要放置TeamCity的空目录中创建 docker-compose.yml

version: '3'
services:
  TeamCity:
    image: jetbrains/teamcity-server
    ports:
     - "8111:8111"
    volumes:
     - <your TeamCity dir>/data:/data/teamcity_server/datadir
     - <your TeamCity dir>log:/opt/teamcity/logs
  MySQL:
    image: mysql
    ports:
     - "3306:3306"
    volumes:
     - <your TeamCity dir>/mysql:/var/lib/mysql
    env_file:
      - mysql.env

第2步:在同一目录中创建 mysql.env

MYSQL_ROOT_PASSWORD=YOUR-MYSQL-PASSWD

步骤3:在

的终端中运行docker-compose up -d

第4步:在浏览器中打开“ http://127.0.0.1:8111

第5步:在“数据库主机”字段中输入“ MySQL:3306”。