在配置我的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
答案 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 run
由docker build ...
填充,下一步运行docker push ...
以生成新容器。