mysqldump无法连接到服务器

c0vxltue  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(451)

这是jenkinsfile中问题的来源:

stage ('Build & Run container') {
    imageMysql     = docker.build('backend-server-mysql-dev', '--no-cache -f build/docker/mysql/Dockerfile .')
    containerMysql = imageMysql.run("--name backend-server-mysql-dev -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e  MYSQL_ROOT_USER=root -e MYSQL_PASSWORD=mahmoud -e MYSQL_DATABASE=soextremedb")
    sh 'docker ps | docker exec -it backend-server-mysql-dev /bin/bash | ls -l | mysqldump -u root -proot soextremedb < soextremedb.sql'
}

这是错误消息:

Shell Script -- docker ps | docker exec -it backend-server-mysql-dev /bin/bash | ls -l | mysqldump -u root -proot soextremedb < soextremedb.sql -- (self time 566ms)
[soextremeBackEnd_Dev-MBC6SQWYSNVE6ADN2QOAOGZ4YYVT5E6K7Y2FUP6ROOROWRMCPFOA] Running shell script
+ docker ps
+ docker exec -it backend-server-mysql-dev /bin/bash
+ ls -l
+ mysqldump -u root -proot soextremedb

**mysqldump: Got error: 2002: "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")" when trying to connect the input device is not a TTY**
r6vfmomb

r6vfmomb1#

我认为这部电影有几个问题 sh 命令。
第一, | 用于将一个命令的输出发送到下一个命令,但看起来您只是在尝试执行一系列命令。为此,你可以使用 ; 或者 && . 您可以看看这个答案,以获得shell操作符的一个很好的总结。
那么,为了你的 docker exec 命令,我认为您实际上希望以非交互方式调用一系列命令:关闭 -it 使用 /bin/bash -c 将命令字符串传递给shell。
这会给你一些类似于:

sh 'docker ps ; docker exec backend-server-mysql-dev /bin/bash -c "ls -l ; mysqldump -u root -proot soextremedb < soextremedb.sql"'

相关问题