首页 文章

将配置文件插入Dockerfile的声明性Jenkins管道Docker容器中

提问于
浏览
1

我试图将一个秘密集合的配置文件插入到Docker容器中,作为当前使用声明性语法的Jenkinsfile的一部分 .

Jenkinsfile:

pipeline {
  agent {
    dockerfile true
  }
  environment {
    CONFIG = credentials('name-of-Jenkins-secret-file')
  }
  stages {
    stage('Build') {
      steps {
        sh "echo ${CONFIG} > /usr/src/scripts/config/default.json"
      }
    }
  }
}

Dockerfile:

FROM node:carbon

WORKDIR /usr/src/scripts
COPY package*.json ./
RUN npm install
COPY . .

ENTRYPOINT node ./run.js

建造时完成的步骤:

Record trace of a Docker image used in FROM <1s
docker build -t 47a61bffd47bc4f049a967a05f05889983734f32 -f "Dockerfile" "."— Shell Script 1s
Dockerfile— Read file from workspace <1s
Checks if running on a Unix-like node <1s
General SCM <1s
Shell Script
[repo_branch-4ZXYH5FGLRRVXQLNJJ2SCGKMMGIMGWH5VUJEHPFZ6CDVODQSHRHQ] Running shell script
Error response from daemon: Container 0daa4e0d56818544fd228607d7c6318963f80ad99c0f8781a425163c4fb4fc2f is not running
script returned exit code -2
STATUS: FAILED

我不确定我是否试图以一种奇怪或不寻常的方式实现这一目标 . 我发现使用管道构建docker镜像的大部分材料都是为了将它们保存到私有存储库,这表明我可能会做一些奇怪的事情 . 该错误表示无法对未运行的容器执行操作 .

1 回答

  • 1

    我建议遵循:

    Jenkinsfile

    pipeline {
      agent {
        dockerfile true
      }
      environment {
        CONFIG = credentials('name-of-Jenkins-secret-file')
      }
      stages {
        stage('Copy Script') {
          steps {
            sh "echo ${CONFIG} > /usr/src/scripts/config/default.json"
          }
        }
        stage('Run Server') {
          steps {
            sh "cd /usr/src/scripts && node ./run.js"
          }
        }
      }
    }
    

    Dockerfile:

    FROM node:carbon
    
    WORKDIR /usr/src/scripts
    COPY package*.json ./
    RUN npm install
    
    ENTRYPOINT ["/bin/bash"]
    

    我认为这仍然不是一个完美的代码,但可能是一个起点 .

相关问题