首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jenkins和docker部署到服务器

使用jenkins和docker部署到服务器
EN

Stack Overflow用户
提问于 2019-09-04 01:30:29
回答 2查看 999关注 0票数 2

嘿,我现在正在学习用于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上,对吧?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-04 03:10:17

对于第一个问题,您应该使用EnvInject Plugin。或者,如果您正在从管道运行Docker,则在Jenkins中设置环境变量,然后在Docker run命令中访问这些环境变量。

在管道中,您可以像这样访问环境变量

${env.DEVOPS_KEY},因此您的Docker run命令将是

代码语言:javascript
复制
docker run -p -e myEnV=${env.DEVOPS_KEY}

但是请确保您已经在Jenkins服务器中设置了DEVOPS_KEY

使用EnvInject非常简单。

您也可以从文件中插入。

对于你的第二个问题,是,只需从docker-hub中拉出图像并使用它。

您团队中的任何人都可以拉入和运行,因此只有Jenkins服务器将构建和推送映像。因此,它将为其他人节省时间,并且图像将是最新的,也可以远程访问。

切勿在Docker镜像中推送或保存敏感数据。

票数 0
EN

Stack Overflow用户

发布于 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中看到它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57776337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档