首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins docker上的未知MySQL服务器主机

Jenkins docker上的未知MySQL服务器主机
EN

Stack Overflow用户
提问于 2019-06-14 22:24:36
回答 1查看 290关注 0票数 0

在Jenkinsfile阶段,我想构建项目,但在尝试让mysql工作时抛出错误。运行jenkins时抛出的错误是:Unknown MySQL server host 'web_db' (这与下面的代码行相关:

代码语言:javascript
复制
sh '''mysql -u root -h web_db --password=root database -e \'SELECT 1\' > /dev/null'''

它包含在这个Jenkinsfile文件中(只有stage)

代码语言:javascript
复制
stage('Configure web...') {
    agent {
        docker {
            label 'web'
            image ECR_URL_WEB
            args "-v${env.HOST_WORKSPACE_DIRECTORY}_${env.BRANCH_NAME}:/projectname"
            reuseNode true
        }
    }
    steps {
        sh '''
            if [ ! -f ./web/.htaccess ]; then
            cp /config/domainname.htaccess ./web/.htaccess
            fi
        '''
        sh '''
            if [ ! -f ./app/config/parameters.yml ]; then
            cp /config/parameters.yml ./app/config/
            fi
        '''
        sh '''
            if [ ! -d ./vendor ]; then
            php -d memory_limit=-1 /usr/local/bin/composer install --no-progress
            fi
        '''
        script {
            try {
                sh '''mysql -u root -h web_db --password=root database -e \'SELECT 1\' > /dev/null'''
            } catch (err) {
                sh '''
                    bin/console doctrine:database:create
                    bin/console doctrine:schema:create
                '''
        }
    }
}

docker-compose.yml

代码语言:javascript
复制
version: '3.7'

volumes:
  jenkins-home:

services:
  jenkins:
    image: localhost:5000/jenkins-docker
    build: .
    restart: unless-stopped
    ports:
      - target: 8080
        published: 8080
        protocol: tcp
        mode: host
    volumes:
      - jenkins-home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
    container_name: jenkins-docker
    networks:
      - net

  db_host:
    container_name: web_db
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=root
    networks:
      - net

networks:
  net:
EN

回答 1

Stack Overflow用户

发布于 2019-06-14 23:30:47

容器需要通过它们的service names引用,而不是通过实际的container names引用。在本例中,web_db容器的服务名称是db_host,因此请将web_db替换为db_host

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56600122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档