我用gitlab运行器和gitlab自己创建了一个Gitlab CI CD管道。 现在,除了一个简单的脚本之外,所有内容都可以运行。 它不会将任何文件复制到该卷。 我正在使用docker-compose 2.7 我还必须说,我不确定卷的数量。
这是我的.gitlab-ci.yml的摘要
stages:
- build_single
- test_single
- clean_single
- build_lb
- test_lb
- clean_lb
Build_single:
stage: build_single
script:
- docker --version
- docker-compose --version
- docker-compose -f ./NodeApp/docker-compose.yml up --scale slave=1 -d
- docker-compose -f ./traefik/docker-compose_single.yml up -d
- docker-compose -f ./DockerJMeter/docker-compose.yml up --scale slave=10 -d
使用ls时,所有文件都位于正确的文件夹中。
Docker-compose:
version: '3.7'
services:
reverse-proxy:
# The official v2.0 Traefik docker image
image: traefik:v2.0
# Enables the web UI and tells Traefik to listen to docker
command: --api.insecure=true --providers.docker
ports:
# The HTTP port
- "7000:80"
# The Web UI (enabled by --api.insecure=true)
- "7080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik/config_lb:/etc/traefik
networks:
- default
networks:
default:
driver: bridge
name: traefik
对于JMeter,我使用copy语句在启动之后获取配置文件。但是对于traefik,我需要traefik的启动过程中的文件。
我以为./traefik/config_lb:/etc/traefik
带有'。'在traefik前面创建相对于docker-compose文件的路径。
错了吗
我还必须说,gitlab和runner都在主机系统上进行了dockerized。因此docker的实例正在主机系统上运行,而gitlab-runner也使用docker.sock。
最好的问候!
答案 0 :(得分:1)
在docker容器中使用gitlab-runner
时,它将启动另一个容器,gitlab-executor
基于您在.gitlab-ci.yml
中指定的图像。 gitlab-runner
使用docker主机的docker袜子(请参阅/var/run/docker.sock:/var/run/docker.sock
中的/etc/gitlab-runner/config.toml
)启动执行程序。
当您随后使用docker-compose
启动另一个容器时,再次使用docker袜子。您在docker-compose.yml
中指定的任何源路径都必须指向docker主机上的路径,否则创建的服务中的目标将为空(假设源路径不存在)。
因此,您需要做的是在Docker主机上找到traefik/config_lb
的路径并将其作为source
提供。