Docker 在gitlab ci cd中创建文件并将其复制到卷

Docker 在gitlab ci cd中创建文件并将其复制到卷,docker,docker-compose,Docker,Docker Compose,我用Gitlab runner和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

我用Gitlab runner和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前面带有“.”的
/traefik/config\u lb:/etc/traefik
会创建一个关于docker compose文件的路径。 这是错的吗? 我还必须说,gitlab和runner都停靠在主机系统上。因此docker的instanz在主机系统上运行,gitlab runner也使用docker.sock


致以最良好的祝愿

在docker容器中使用
gitlab runner
时,它会根据在
.gitlab ci.yml
中指定的图像启动另一个容器
gitlab executor
gitlab runner
使用docker主机的docker sock(请参见
/etc/gitlab runner/config.toml
中的
/var/run/docker.sock:/var/run/docker.sock
)启动执行器

然后使用
docker compose
启动另一个容器时,再次使用docker sock。您在docker compose.yml中指定的任何源路径都必须指向docker主机上的路径,否则所创建服务中的目标将为空(假定源路径不存在)


因此,您需要做的是在docker主机上找到指向
traefik/config_lb
的路径,并将其作为
源代码提供

您需要从gitlab runner主机透视图而不是docker runner本身创建卷。确定。这意味着我必须检查gitlab runner//home/traefik/?啊,非常感谢。所以我必须首先将其装载到gitlab runner?我认为最好的方法是在docker compose中创建一个卷,并在traefik和反向代理服务中使用它。好的,太完美了!之后,我只需在其他服务中装载卷?卷对我来说仍然有点复杂。你可以看看: