teamcity无法连接docker中运行的mysql

ldxq2e6h  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(408)

我使用以下命令在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,错误消息是:

我可以使用以下命令连接到终端中的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图像标签都是最新的

sqyvllje

sqyvllje1#

原因是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

第三步:跑步 docker-compose up -d 在终点站
第四步:打开“http://127.0.0.1浏览器中:8111英寸
第5步:输入“mysql:3306“在数据库主机字段中。

相关问题