В настоящее время я использую внешнюю БД для выполнения модульных тестов в моем конвейере.Я хочу увеличить время выполнения сборки за счет локального тестирования в конвейере.
Я пытаюсь использовать этот формат.
docker.image('mysql:5.6').withRun(' -e "MYSQL_ROOT_PASSWORD=pass" ') { c ->
sh('docker ps -l')
docker.image('mysql:5.6').inside(" --link ${c.id}:db ") {
/* Wait until mysql service is up */
sh ("while ! mysqladmin ping -hdb:3306 -ppass; do sleep 1; done")
}
docker.image(imageName).inside(" --link ${c.id}:db ") {
/*
* Run some tests which require MySQL, and assume that it is
* available on the host name `db`
*/
sh("echo test")
//run some tests
}
}
Код не достигает второго изображения.Это ошибки раньше, потому что это can't connect to the host 'db'
.Вот вывод:
+ docker run -d -e MYSQL_ROOT_PASSWORD=pass mysql:5.6
[Pipeline] dockerFingerprintRun
[Pipeline] sh
+ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63c18d0dfbd6 mysql:5.6 "docker-entrypoint..." Less than a second ago Up Less than a second 3306/tcp sleepy_haibt2
[Pipeline] sh
+ docker inspect -f . mysql:5.6
.
[Pipeline] withDockerContainer
slave-37188a47f08d1 seems to be running inside container 5e34252...
[Pipeline] {
[Pipeline] sh
+ mysqladmin ping -hdb:3306 -ppass
Warning: Using a password on the command line interface can be insecure.
mysqladmin: connect to server at 'db:3306' failed
error: 'Unknown MySQL server host 'db:3306' (2)'
Check that mysqld is running on db:3306 and that the port is 3306.
You can check this by doing 'telnet db:3306 3306'
+ sleep 1
$ docker run -t -d -u 0:0 --link 63c18d0d...:db -w /home/jenkins/workspace/-database-for-testing-in-jenkins --volumes-from 5e34252... -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** mysql:5.6 cat
$ docker top d003b0649... -eo pid,comm
+ mysqladmin ping -hdb:3306 -ppass
Warning: Using a password on the command line interface can be insecure.
mysqladmin: connect to server at 'db:3306' failed
error: 'Unknown MySQL server host 'db:3306' (2)'
Check that mysqld is running on db:3306 and that the port is 3306.
You can check this by doing 'telnet db:3306 3306'
+ sleep 1
Я пытался удалить :3306
из mysqladmin
Я пытался добавить -p 3306:3306
как в основной контейнер, так и в контейнер mysql коляски.
Я пытался добавить -u 0
в оба контейнера.
Docker Version 18.09
Jenkins Version 2.164
K8s Version 1.11
Не уверен, что делать дальше.Совет