gpt4 book ai didi

docker - 从 docker 复制到 CI 构建中的主机

转载 作者:IT老高 更新时间:2023-10-28 21:43:06 25 4
gpt4 key购买 nike

我想知道是否有可能以某种方式将文件/文件夹从 docker 内部复制到主机,但复制自身是在 docker 内部执行的。

原因是,例如:

  • 提交文件到仓库
  • CI 启动
  • Docker 安装依赖,构建网站文件
  • 网站文件从 docker 复制到/var/www/my-website(主机)

当我在寻找解决方案时,我经常看到这个命令 docker cp <containerId>:/file/path/within/container /host/path/target但是这是从 HOST 执行的。我想让整个过程自动化。

可能的解决方案当然是不使用 docker,而是直接使用 SSH,这就是我现在正在做的事情,但这不是 IMO 的最佳选择。

这是我的 .gitlab-ci.yml 的示例文件将解释我想要实现的目标。

image: ubuntu:16.04

build:
stage: build
script:
- apt-get update
- apt-get upgrade -yy
- apt-get install hugo -yy # Static site generator
- hugo build # Build the website
- cp -R ./build/* /var/www/my-website/ # Copy to the web root

这是我的运行者配置

[[runners]]
name = "DOCKER-TEST"
url = "https://gitlab.com/ci"
token = "{{token}}"
executor = "docker"
[runners.docker]
tls_verify = false
image = "ubuntu:16.04"
privileged = true
disable_cache = false
volumes = ["/cache", "/home/stan:/builds/stanislavromanov/test-docker:rw"]
[runners.cache]
Insecure = false

最佳答案

您应该可以设置 Docker volume其中容器中的目录挂载到宿主机的目录中。

如果是 GitLab CI 运行器,这可以在运行器注册期间或以后通过修改 /etc/gitlab-runner/config.toml 来指定。示例:

[[runners]]
url = "https://gitlab.com/ci"
token = TOKEN
executor = "docker"
[runners.docker]
tls_verify = false
image = "ubuntu:16.04"
privileged = true
disable_cache = false
volumes = ["/path/to/bind/from/host:/path/to/bind/in/container:rw"]

documentation了解更多信息。

关于docker - 从 docker 复制到 CI 构建中的主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38097328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com