Ips*_*der 3 gitlab docker gitlab-ci gitlab-ci-runner docker-compose
我有一个docker-compose文件,它构建了两个容器,一个节点应用程序和一个ngnix服务器.现在我想在gitlab runners的帮助下自动化服务器上的构建和运行过程.我对CI相关的东西很新,所以请原谅我的方法:
我想在gitlab.com上创建多个存储库,并为每个存储库提供一个dockerfile.我现在是否必须将gitlab-runner实例与这些项目中的每一个相关联以构建映像,将其推送到docker repo并让服务器从那里拉出来?然后我不得不以某种方式推动服务器上的docker-compose文件并从那里编写所有内容.
所以我的问题是:
对于那种非结构化的写作很抱歉,但我对这些技术有很多疑问.
提前致谢
首先,您可以在https://gitlab.com以及自托管的GitLab实例上使用GitLab CI/CD功能.它不会改变任何东西,除了你将注册你的跑步者的主机:
您可以根据需要添加尽可能多的跑步者(我想是这样,至少我每个项目有5-6名跑步者没有问题).您只需要为项目注册每个跑步者.请参阅为此注册跑步者.
至于共享跑步者与特定跑步者,我认为如果你想尝试GitLab CI/CD,你应该坚持分享跑步者.
GitLab.com上的Shared Runners以自动缩放模式运行,由DigitalOcean提供支持.自动调节意味着减少等待时间以启动构建,并为每个项目隔离虚拟机,从而最大限度地提高安全性.
它们可以免费用于公共开源项目,每个组每月限制为2000 CI分钟用于私人项目.阅读所有GitLab.com计划.
您可以在任何机器上安装自己的跑步者,例如您的laptotp.您可以使用Docker进行部署,以便快速入门.
最后,是的,gitlab-ci.yml如果您使用ssh执行程序并docker-compose在服务器上安装,则可以在文件中使用docker-compose .但我建议使用docker执行程序并使用docker:dind(Docker中的Docker)图像
Docker中的Docker是什么?
虽然通常不推荐在Docker中运行Docker,但是有一些合法的用例,比如Docker本身的开发.
这是一个示例用法,但不包括docker-compose:
image: docker:latest
services:
- name: docker:dind
command: ["--experimental"]
before_script:
- apk add --no-cache py-pip # <-- add python package install pip
- pip install docker-compose # <--- add docker-compose
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin # <---- Login to your registry
build-master:
stage: build
script:
- docker build --squash --pull -t "$CI_REGISTRY_USER"/"$CI_REGISTRY_IMAGE":latest .
- docker push "$CI_REGISTRY_USER"/"$CI_REGISTRY_IMAGE":latest
only:
- master
build-dev:
stage: build
script:
- docker build --squash --pull -t "$CI_REGISTRY_USER"/"$CI_REGISTRY_IMAGE":"$CI_COMMIT_REF_SLUG" .
- docker push "$CI_REGISTRY_USER"/"$CI_REGISTRY_USER":"$CI_COMMIT_REF_SLUG"
except:
- master
Run Code Online (Sandbox Code Playgroud)
如您所见,我构建Docker镜像,标记它,然后将其推送到我的Docker注册表,但您可以推送到任何注册表.当然,您可以随时在script声明中使用docker-compose
我的Git存储库看起来像:
/my_repo
|---- .gitignore
|---- .gitlab-ci.yml
|---- Dockerfile
|---- README.md
Run Code Online (Sandbox Code Playgroud)
我的跑步者的config.toml看起来像:
[[runners]]
name = "4Gb digital ocean vps"
url = "https://gitlab.com"
token = "efnrong44d77a5d40f74fc2ba84d8"
executor = "docker"
[runners.docker]
tls_verify = false
image = "docker:dind"
privileged = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
shm_size = 0
[runners.cache]
Run Code Online (Sandbox Code Playgroud)
有关Runner配置的更多信息,您可以查看https://docs.gitlab.com/runner/configuration/advanced-configuration.html.
注意:这里使用的所有变量都是秘密变量.有关说明,请参阅https://docs.gitlab.com/ee/ci/variables/
我希望它能回答你的问题
| 归档时间: |
|
| 查看次数: |
4942 次 |
| 最近记录: |