使用gitlab-ci和gitlab-runner绑定端口绑定

时间:2016-12-15 12:10:03

标签: docker gitlab gitlab-ci gitlab-ci-runner

在配置我的gitlab-ci和gitlab-runner时,我注意到了一个问题。

我希望在一台服务器上安装几个独立的应用程序环境,在其他外部端口上运行,但使用相同的docker镜像。

我想要实现的目标

  • deploy-dev在容器中的端口80运行Apache,但在外部端口81
  • deploy-rc在容器中的端口80上运行Apache,但在外部端口82上运行

我已经看到docker run--publish参数,允许端口绑定,例如80:81,但遗憾的是我无法在{{1}中找到任何选项或者gitlab-runner' s gitlab-ci.yml来设置该参数。

有没有办法在gitlab-runner运行的Docker中实现端口绑定?

我的config.toml

gitlab-ci.yml

1 个答案:

答案 0 :(得分:1)

您会混淆两个概念:持续集成任务和docker部署。

您配置的是持续集成任务。这个想法是这些执行构建步骤并完成。 Gitlab-ci将记录每个构建步骤的结果并将其呈现给您。这些可以是docker作业本身,但它们不一定是。

您要做的是部署到docker。也就是说你想要启动包含程序的docker作业。经历这个可能超出了堆栈溢出答案的范围,但我会尽力概述你需要做什么。

首先获取您已有的脚本,然后将其转换为dockerfile。您的dockerfile需要添加repo中的所有代码,然后执行您列出的编辑器/控制台脚本。使用$scope.changed=function(color){ for(var i=0;i<$scope.colorlist.length;i++) if($scope.colorlist[i].colorName!==color.colorName){ $scope.colorlist[i].idDefault=false; } } 将此泊坞文件转换为泊坞窗图像。

接下来(可选)您可以将泊坞窗图像上传到存储库。

最后一步是执行docker build命令,加载图像并运行它。

这听起来很复杂,但事实并非如此。我有一个ci管道来做到这一点。一步运行:docker rundocker build ...填充,下一步运行docker push ...以生成新容器。