gpt4 book ai didi

docker - 从 Dockerfile 将配置文件插入到声明性 Jenkins 管道 Docker 容器中

转载 作者:行者123 更新时间:2023-12-02 19:33:14 26 4
gpt4 key购买 nike

我正在尝试将作为 secret 集合的配置文件插入到 Docker 容器中,作为当前使用声明性语法的 Jenkinsfile 的一部分。

Jenkins 文件:

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 镜像的大部分 Material 都是为了将​​它们保存到私有(private)存储库中,这表明我可能在做一些奇怪的事情。该错误表示无法在未运行的容器上执行该操作。

最佳答案

我建议如下:

Jenkins 文件

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"]

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

关于docker - 从 Dockerfile 将配置文件插入到声明性 Jenkins 管道 Docker 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48795450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com