我有一个docker-compose文件,该文件构建了两个容器,一个节点应用程序和一个ngnix服务器。现在,我想在Gitlab运行程序的帮助下在服务器上自动化构建和运行过程。我对与CI相关的事物还很陌生,因此请原谅我的方法:
我想在gitlab.com上创建多个存储库,并为每个存储库创建一个Dockerfile。我现在是否必须将gitlab-runner实例与这些项目中的每一个相关联才能构建镜像,将其推送到docker repo并让服务器从那里拉出它?然后,我不得不以某种方式将docker-compose文件推送到服务器上,然后从那里组成所有内容。
所以我的问题是:
最佳答案
首先,您显然可以在https://gitlab.com以及自托管的GitLab实例上使用GitLab CI/CD功能。除了您要注册运行程序的主机之外,它没有任何改变:
您可以根据需要添加任意数量的运行程序(我认为是这样,并且每个项目至少有5-6个运行程序没有问题)。您只需要为您的项目注册每个赛跑者即可。参见Registering Runners。
至于共享运行者还是特定运行者,如果您想尝试使用GitLab CI/CD,我认为您应该坚持分享运行者。
不过,您可以在任何机器上(例如laptotp)将自己的运行程序安装在任何机器上。您可以deploy it with Docker快速入门。
最后,是的,如果您使用
gitlab-ci.yml
执行程序并在服务器上安装了ssh
,则可以在docker-compose
文件中使用docker-compose。但我建议使用
docker
执行程序并使用 docker:dind
(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_IMAGE":"$CI_COMMIT_REF_SLUG"
except:
- master
如您所见,我构建了Docker镜像,对其进行了标记,然后将其推送到我的Docker注册表中,但是您可以推送到任何注册表。当然,您可以随时在
script
声明中使用docker-compose我的Git存储库如下所示:
/my_repo
|---- .gitignore
|---- .gitlab-ci.yml
|---- Dockerfile
|---- README.md
我的运行者的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]
您可以查看https://docs.gitlab.com/runner/configuration/advanced-configuration.html以获得有关Runner配置的更多信息。
我希望它能回答您的问题
关于docker - 如何使用Gitlab CI构建,推送和拉取多个Docker容器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50683869/