【发布时间】:2021-05-12 14:44:55
【问题描述】:
我正在尝试使用 Gitlab CI/CD 构建和运行我的 Docker 映像,但有一个问题我无法修复,即使本地一切正常。
这是我的 Dockerfile:
FROM <internal_docker_repo_image>
RUN apt update && \
apt install --no-install-recommends -y build-essential gcc
COPY requirements.txt /requirements.txt
RUN pip install --no-cache-dir --user -r /requirements.txt
COPY . /src
WORKDIR /src
ENTRYPOINT ["python", "-m", "dvc", "repro"]
这就是我运行容器的方式:
docker run --volume ${PWD}:/src --env=GOOGLE_APPLICATION_CREDENTIALS=<path_to_json> <image_name> ./dvc_configs/free/dvc.yaml --force
在本地运行时一切正常,但在 Gitlab CI/CD 上运行时失败。
stages:
- build_image
build_image:
stage: build_image
image: <internal_docker_repo_image>
script:
- echo "Building Docker image..."
- mkdir ~/.docker
- cat $GOOGLE_CREDENTIALS > ${CI_PROJECT_DIR}/key.json
- docker build . -t <image_name>
- docker run --volume ${PWD}:/src --env=GOOGLE_APPLICATION_CREDENTIALS=<path_to_json> <image_name> ./dvc_configs/free/dvc.yaml --force
artifacts:
paths:
- "./data/*csv"
expire_in: 1 week
这会导致以下错误:
ERROR: you are not inside of a DVC repository (checked up to mount point '/src')
以防万一您不知道 DVC 是什么,这是一种用于机器学习的工具,用于对模型、数据集、指标进行版本控制,此外,还可以设置您的管道,在我的案例中使用它.
本质上,它需要两个文件夹.dvc 和.git 位于执行dvc repro 的目录中。
在这种特殊情况下,鉴于文件夹的内容完全相同并且.dvc 和.git 都存在,我不知道为什么它无法运行此命令。
提前致谢!
【问题讨论】:
标签: docker continuous-integration gitlab-ci dvc