使用docker-compose生成图像-仅-

时间:2019-07-31 17:57:50

标签: git docker jenkins docker-compose gitlab

我正在使用Jenkins管道来创建Docker映像并将其存储在Docker Hub上。事件的顺序如下:

  1. 从Gitlab中提取代码
  2. 使用“ docker-compose”在“从属”计算机上构建映像文件
  3. 将映像文件复制到Docker注册表
  4. 删除图像文件。

为此,我使用以下代码:

pipeline {
  environment {
    registry = "<user_name>/object"
    registryCredential = 'dockerhub'
  }
  agent { label 'ubuntu16.04-slave-two' }
  stages {
    stage('Cloning Git') {
        steps {
                ....
            }
    }
    stage('Building image') {
      steps{
        sh '/usr/local/bin/docker-compose up --build '
      }
    }
    stage('Deploy Image') {
      steps{
        script {
          docker.withRegistry( '', registryCredential ) {
            dockerImage.push()
          }
        }
      }
    }
    stage('Remove Unused docker image') {
      steps{
        sh "docker rmi $registry:$BUILD_NUMBER"
      }
    }
  }
}

除此命令外,一切似乎都可以正常工作

 sh '/usr/local/bin/docker-compose up --build '

这确实有效-但是-因为我正在使用docker up,所以它将启动服务器(在Jenkins创建图像之后)。

我需要一种生成(和命名)映像的方法,以便可以使用docker-compose命令将其复制到Docker Hub。

是否可能-或-仅docker命令本身可用于创建Docker映像。

这是docker-compose.yml文件的简化版本(实际的文件具有更多服务):

version: '3'

services:
  authorize-service:
    build: ./authorizations
    container_name: authorize-service
    environment:
      - DB_IP=XX.XX.XX.XX
      - DB_PORT=1521
      - DB_SID=TEST
      - DB_USER=<id>
      - DB_PASS=<password>
    ports:
      - 2700:5000
    networks:
      - tempnetwork

  website:
    build: ./website
    container_name: authorize-website
    links:
      - authorize-service
    volumes:
      - ./website:/var/www/html
    ports:
      - 5000:80
    networks:
      - tempnetwork
    depends_on:
      - authorize-service

networks:
  tempnetwork:
    driver: bridge

任何帮助,提示或建议,将不胜感激。

TIA

1 个答案:

答案 0 :(得分:1)

只使用/usr/local/bin/docker-compose build而不是up