首页 > 解决方案 > 詹金斯 - 码头工人:未找到

问题描述

我对 docker 和 jenkins 很陌生,但想看看我是否可以在我的树莓派上自动部署和运行节点应用程序。在一个理想的世界里,我想让 Jenkins 从 github 上下载代码,使用 jenkinsfile 和 dockerfile 来构建和运行 docker 镜像(希望这是可能的)。

詹金斯文件

pipeline {
    agent {
        dockerfile true
    }
    environment {
        CI = 'true' 
        HOME = '.'
    }
    stages {
        stage('Install dependencies') {
            steps {
                sh 'npm install'
            }
        }
        stage('Test') { 
            steps {
                sh './scripts/test' 
            }
        }
        stage('Build Container') { 
            steps {
                sh 'docker build -t test-app:${BUILD_NUMBER} . ' 
            }
        }
    }
}

dockerfile

 # Create image based on the official Node image
FROM node:12

# Create a directory where our app will be placed
RUN mkdir -p /usr/src/app

# Change directory so that our commands run inside this new directory
WORKDIR /usr/src/app

# Copy dependency definitions
COPY package.json /usr/src/app

# Install dependecies
RUN npm install

# Get all the code needed to run the app
COPY . /usr/src/app

# Expose the port the app runs in
EXPOSE 3000

# Serve the app
CMD ["npm", "start"]

但是,当我尝试在 jenkins 中运行它时,出现以下错误:../script.sh: docker: not found。这似乎适用于任何 docker 命令。我实际上尝试运行以 'sudo' 开头的其他一些命令,但它抱怨sudo: not found。是否缺少步骤或者我试图以不正确的方式做某事。(注意:docker 安装在树莓派上。我可以使用 jenkins 用户登录并执行 docker 命令。它只是无法通过 web ui 工作)任何建议将不胜感激。

谢谢!

标签: node.jsdockerjenkinsraspberry-pi

解决方案


显然这部分打破了它:

agent {
    dockerfile true
}

当我设置这个:

agent any

它完成了构建,包括没有任何问题的 docker 命令。我想我只是不明白那件作品是如何工作的。任何解释都会有所帮助!


推荐阅读