首页 > 解决方案 > 如何在 gitlab 本地分支上挂载 docker 卷?

问题描述

我正在尝试挂载 gitlab 本地分支文件夹。Docker 运行命令在这里:

docker run --name img -v "$(pwd)":/app test-image

这是行不通的。我在我的.gitlab-ci.yml文件中添加了这个。

如何在运行 docker 容器时挂载 gitlab 分支文件夹以写入数据?

我一直在寻求帮助:-(

标签: dockergitlab

解决方案


最后我可以在我同事的帮助下使它工作:-)

我是 gitlab 的新手。对不起,如果我解释有什么问题。

这是我的解决方案:

我试图在容器中挂载一个本地文件夹以在本地文件夹中创建输出文件,这样我就可以查看输出文件。

这是我的 Dockerfile

FROM openjdk:7
RUN mkdir /myApp
COPY myProject/  /myApp
ENTRYPOINT ["perl","/myApp/entrypoint.pl"]

在这里,我想将我的输出存储在 docker 容器中的 /app 中,并且我想将它挂载到我的本地文件夹中。我正在使用以下命令。

docker run --name img -v "$(pwd)":/app test-image

这是安装点"$(pwd)":/app(本地当前工作目录),但这不会在我的当前目录中创建任何输出。我不知道这是否可以在本地分支目录中创建输出。

我查看输出文件和输出的意图是静态 html 内容。所以,我通过使用gitlab pages解决了这个问题。我正在安装 gitlab工件,这样我就可以在gitlab 页面中查看我的文件(您只能为静态 html 内容创建 gitlab 页面)。

这是我的 gitlab CI 文件

pages:
 stage: deploy
 image: docker:stable
 script:
   - mkdir -p ./public
   - docker run -v "$(pwd)"/input:/source -v "$(pwd)":/output test-image -input
     /source -output /ouput/public  || true

 artifacts:
  paths:
    - public

上面docker run的命令是根据我的要求,我将命令行参数(-input 和 -output)传递给 docker 映像中的 perl 脚本。

这里重要的是输出。我们可以为输入和输出提供任何名称,但输出应安装在我们用作artifact的public上。

在当前目录中创建一个文件夹作为 /public 并将其挂载为输出。现在,您可以在gitlab pages(settings->pages)中看到您的输出。正如我之前提到的,只有当它是具有 index.html 的静态 html 内容时,我们才能查看 gitlab 页面。如果您没有 index.html,那么您必须下载工件并查看文件。作业完成后,它将创建一个工件文件夹。您可以查看作业执行的右侧。


推荐阅读