pet*_*hka 5 deployment volumes gitlab docker gitlab-ci-runner
假设我在 Gitlab 上有存储库并遵循以下部署方案:
.gitlab-ci.yml设置 docker-compose 中,与依赖项一起构建和建立我的服务。production。正如Gitlab 指南中建议的那样,我放置了/etc/gitlab-runner/config.toml以下几行:
executor = "docker"
[runners.docker]
image = "alpine"
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
Run Code Online (Sandbox Code Playgroud)
但我的书docker-compose.yml完全被忽略了。假设我有具有以下结构的 git 存储库:
.gitlab-ci.yml
docker-compose.yml
user_conf.d/app.conf
Run Code Online (Sandbox Code Playgroud)
并有卷:./user_conf.d:/etc/nginx/user_conf.d. 当我检查/etc/nginx/user_conf.d容器内部时,我发现一个空文件夹而不是app.conf里面的文件夹。
所以问题是:如何正确地将卷传递到从 Gitlab runner 的 docker 执行器启动的 docker 容器。
PS配置如下:
.gitlab-ci.yml:
.gitlab-ci.yml
docker-compose.yml
user_conf.d/app.conf
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml:
image:
name: docker/compose:latest
services:
- docker:dind
stages:
- deploy
deploy:
stage: deploy
only:
- production
script:
- docker image prune -f
- docker-compose build --no-cache
- docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
我在等效设置上遇到了同样的问题(自托管 docker 执行器,类似.gitlab-ci.yml,通过 Docker compose 安装卷)。
[runners.docker]我通过对以下部分进行以下两项更改解决了这个问题config.toml:
privileged = falseprivileged = true"/builds:/builds"volumes我从这个 GitLab 问题中获得了这两项更改的灵感。
config.toml作为参考,这是更改后的完整内容:
# config.toml
concurrent = 4
[session_server]
session_timeout = 1800
[[runners]]
name = "..."
url = "..."
token = "..."
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.docker]
tls_verify = false
image = "docker:20.10.17"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock", "/builds:/builds"]
shm_size = 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3820 次 |
| 最近记录: |