如何通过 dockerfile 将文件从 gitlab runner 复制到 docker 图像

How to copy file from gitlab runner into docker image through dockerfile

我需要能够通过 gitlab ci/cd.

将私有 gitlab 服务器中的 ssl 文件复制到 docker 图像中

下面是我的gitlab runner的配置。我已经映射了 /root/server-ssl 目录的卷,因此可以通过 ci/cd

读取文件
[runners.docker]
    tls_verify = false
    image = "docker.myserver.com/gitlab-base-image"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = true
    volumes = ["/var/run/docker.sock:/var/run/docker.sock",
 "/root/.docker/config.json:/root/.docker/config.json",
 "/cache",
 "/root/server-ssl:/root/server-ssl"]
    extra_hosts = ["gitlab.myserver.com:<some_ip>"]
    shm_size = 0

下面是我的docker文件配置:

# 1 - Build environment
FROM node:10.16 as react-build
WORKDIR /usr/src/app
COPY package.json yarn.lock ./
RUN yarn
COPY . ./
RUN yarn build

# 2 - Production environment
FROM nginx:alpine
RUN mkdir -p /root/server-ssl
COPY /root/server-ssl/ssl.chained.crt /root/server-ssl/
COPY /root/server-ssl/ssl.key /root/server-ssl/
COPY nginx.staging.conf /etc/nginx/conf.d/default.conf
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]

但是我总是在 gitlab ci/cd runner 中得到以下错误:

Step 5/18 : COPY /root/server-ssl/ssl.chained.crt /root/server-ssl/
COPY failed: stat /var/lib/docker/tmp/docker-builder528505413/root/server-ssl/ssl.chained.crt: no such file or directory

谁能帮我复制这些文件?

这些文件不在 docker 构建上下文中。可以想出几种方法将它们带入 docker 上下文

  • 在Dockerfile所在文件夹与文件所在目录创建符号链接

  • 物理复制文件到Dockerfile所在文件夹之前运行docker构建命令