嘿,我现在正在学习用于CI和CD Jenkins管道,我被Jenkins成功地将我的express js部署在本地机器上,我的服务器是用于服务器的,我的ENV在我的公共存储库上展示了我在这里试图了解更多如何在我的Jenkins上隐藏ENV?是否可以在Dockerfile上使用变量来隐藏我ENV?
在我的Jenkins管道上,我在docker run -p -e myEnV=key上运行我的ENV,我确实喜欢隐藏我的ENV,所以人们不知道我的密钥在我的jenkins文件和Dockerfile中。我在Jenkins中使用多分支,因为我遵循hackernoon上的文章,使用Jenkins部署react和node js应用程序。
无论如何,将我们的容器或镜像推送到Docker Hub有什么好处?如果我们把它推到那里,如果我们想把我们的服务器移到另一台服务器上,我们只需要把我们的repo Docker Hub拉到新的服务器上,因为每次我们构建的东西都会推到我们的repo Docker Hub上,对吧?
发布于 2019-09-04 03:10:17
对于第一个问题,您应该使用EnvInject Plugin。或者,如果您正在从管道运行Docker,则在Jenkins中设置环境变量,然后在Docker run命令中访问这些环境变量。
在管道中,您可以像这样访问环境变量
${env.DEVOPS_KEY},因此您的Docker run命令将是
docker run -p -e myEnV=${env.DEVOPS_KEY}但是请确保您已经在Jenkins服务器中设置了DEVOPS_KEY。
使用EnvInject非常简单。

您也可以从文件中插入。

对于你的第二个问题,是,只需从docker-hub中拉出图像并使用它。
您团队中的任何人都可以拉入和运行,因此只有Jenkins服务器将构建和推送映像。因此,它将为其他人节省时间,并且图像将是最新的,也可以远程访问。
切勿在Docker镜像中推送或保存敏感数据。
发布于 2019-09-04 14:39:53
使用Docker Hub或任何类型的注册表,如Sonatype Nexus,注册表,JFrog Artifactory可以帮助您保存带有标签的图像,并与任何人共享。这也意味着图像在那里是安全的。如果您的本地环境发生故障,映像将留在那里。它还有助于版本控制。如果您使用多分支管道,这意味着您可能会生成具有不同标记的不同图像。
运行Jenkins,处理作业,进行部署都不是一个好的做法。根据我以前工作的经验,最好的例子是:服务器在一段时间后开始变得臃肿,Jenkins在你需要它的最重要的时候不能工作,你部署的应用程序不能工作,因为Jenkins有太多的作业占用了所有的资源。
目前,我正在为Jenkins Master和Slave运行不同的服务器。主实例不运行任何作业,只有主实例运行。这让Jenkins一直活着。如果slaves宕机,您可以简单地设置另一个slave。
对于部署,我使用的是Ansible,它可以同时将相同的docker镜像部署到多个服务器。它很容易使用,而且在我看来也很安全。
对于密钥、密码、api密钥等敏感数据,使用-e标志是正确的。您也可以使用--env-file。这样,您就可以将它放在docker镜像之外,并保留文件。对于密码,我更喜欢在环境文件中生成密码的shell脚本。
如果您计划按原样使用环境,则可以将要设置为环境变量的值安全地保留在Jenkins中。然后,您可以将该值作为变量获取。您可以在Jenkins website中看到它
https://stackoverflow.com/questions/57776337
复制相似问题