the*_*tor 4 continuous-integration gitlab docker
我的项目有多个组件,需要在单独的容器中运行并相互连接。我正在尝试在 Gitlab CI 的单个“测试”阶段作业中运行整个项目的测试。为此,我需要创建多个泊坞窗并手动设置每个组件。有什么办法可以在 Gitlab CI 中做到这一点吗?
任何意见,将不胜感激。谢谢!
在 gitlab.com 上使用共享运行程序时,有几种主要方法可以在 GitLab 作业中运行多个 docker 容器
您可以使用服务来启动多个容器。举例来说,您的工作依赖于数据库,您可以services:在.gitlab-ci.yml. 您还可以选择指定alias:主机名,通过该主机名可以从您的作业访问这些服务
my_job:
environment:
POSTGRES_PASSWORD: password
POSTGRES_USERNAME: postgres
POSTGRES_DB: dbname
services:
- name: postgres:latest
alias: mydatabase.local
script:
- psql -h mydatabase.local -u $POSTGRES_USERNAME --password $POSTGRES_PASSWORD -d $POSTGRES_DB
- ...
Run Code Online (Sandbox Code Playgroud)
这种方法有一些局限性,包括:
如果这些限制影响您,则应使用以下方法:
docker您还可以在作业中使用来设置多个容器。这是使用该docker:dind服务来完成的。然后您可以使用docker run或docker-compose设置您的工作所需的其他容器。
如果您必须这样做,这特别有用
my_job:
image: docker:19.03.12
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_TLS_CERTDIR: ""
DOCKER_DRIVER: overlay2
services:
- docker:19.03.12-dind
script:
- docker run --rm -d -p 80:80 strm/helloworld-http
- curl http://docker
Run Code Online (Sandbox Code Playgroud)
您还可以使用docker build、docker-compose或任何通常用于设置容器的常用 docker 接口。
需要注意的一件重要事情是,由于您的 docker 容器通过该docker:dind服务运行,因此运行容器公开的端口也会通过该服务公开。因此,与您在本地开发中可能熟悉的方式不同,您无法使用它curl http://localhost:Port来访问端口映射的容器。
| 归档时间: |
|
| 查看次数: |
5013 次 |
| 最近记录: |