Непрерывная доставка для приложения React с использованием Docker в Jenkins в Windows - PullRequest
0 голосов
/ 29 мая 2019

Я следовал (это) [https://hackernoon.com/continuous-delivery-of-react-app-with-jenkins-and-docker-8a1ae1511b86] учебник по настройке Непрерывной доставки для React App с использованием Jenkins и Docker. Я сделал все начальные настройки в Jenkins, и когда я пытаюсь построить задание, он показывает следующую ошибку:-

Jenkins Console Output

Итак, я понял, что установка докера отсутствует в конвейере Jenkins, поэтому я попытался добавить установку докера в конвейер и добавил установку Jenkins в конфигурации инструмента какхорошо. Но все равно он показывает ту же ошибку, любая помощь будет высоко оценена.

enter image description here

Это мой Jenkisfile: -

pipeline{
agent any
stages{
stage('Checkout') {
    steps{
        script{
            checkout scm
        }
     }
    }
stage('Install dependencies') {
  steps {
    script {
      def dockerTool = tool name: 'docker', type: 'org.jenkinsci.plugins.docker.commons.tools.DockerTool'
               withEnv(["DOCKER=${dockerTool}/bin"]) {
                //stages
                //here we can trigger: sh "sudo ${DOCKER}/docker ..."
                } 
            }
        }
      }
   stage('Environment') {
       steps{
           script{
            sh 'git --version'
            echo "Branch: ${env.BRANCH_NAME}"
            sh 'docker -v'
            sh 'printenv'
           }
       }
     }
    stage('Build Docker test'){
        steps{
        sh 'docker build -t react-test -f Dockerfile.test --no-cache .'
        }
    }
    stage('Docker test'){
      steps{
      sh 'docker run --rm react-test'
      }
    }
    stage('Clean Docker test'){
      steps{
      sh 'docker rmi react-test'
      }
    }
    stage('Deploy'){
    steps{
      if(env.BRANCH_NAME == 'master'){
        sh 'docker build -t reactapp --no-cache .'
        sh 'docker tag reactapp localhost:5000/reactapp'
        sh 'docker push localhost:5000/reactapp'
        sh 'docker rmi -f react-app localhost:5000/reactapp'
      }
    }
    }
  }
 }

Dockerfile

# Extending image
FROM node:carbon

RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get -y install autoconf automake libtool nasm make pkg-config git apt-utils

# Install Docker -y flag suppresses prompting from apt-get
RUN apt-get update && \
    apt-get -y install docker-ce docker-ce-cli containerd.io

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app  
....

1 Ответ

1 голос
/ 29 мая 2019

Если вы запускаете Jenkins в контейнере Docker, как в этой статье, вам нужно установить Docker в образе Docker для запуска команд Docker.Если Docker установлен, это, вероятно, проблема с правами доступа или PATH.

Один из способов проверить, установлен ли Docker и можно ли его запустить, - войти в контейнер, в котором работает Jenkins, и попытаться запустить команду Docker.:

  1. docker ps - при запуске на машине, на которой работает Docker, сообщит вам, какие контейнеры запущены.Возьмите идентификатор CONTAINER для контейнера Jenkins Docker.
  2. docker exec -it <put container id here> bash - вы получите работающую оболочку в этом контейнере, чтобы вы могли запускать команды из контейнера.
  3. docker -v - извнутри контейнера сообщит вам, была ли успешно установлена ​​докерская программа.Если вы получите docker: command not found, Дженкинс не сможет его использовать.
  4. exit - закроет вашу оболочку.

Вы можете установить Docker в образе Jenkins Docker.добавив RUN команды в ваш Dockerfile.Например:

# Install Docker -y flag suppresses prompting from apt-get
RUN apt-get update && \
    apt-get -y install docker-ce docker-ce-cli containerd.io

Документация Docker для установки: https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...