【发布时间】:2019-10-06 18:12:41
【问题描述】:
我想从 gitlab-ci.yml 执行一个外部(在本地机器上)bash 脚本,它使用 docker:stable 映像。我想执行位于 gitlab docker 映像之外的 startup.sh。这是可能的还是有更好的选择?
gitlab-ci.yaml
image: docker:stable
#Build script
variables:
CI_DEBUG_TRACE: "true"
DOCKER_DRIVER: overlay
before_script:
- docker --version
build:
services:
- docker:dind
script:
- docker build --no-cache -t <tag> .
- docker login -u root -p <pass> <registry>
- docker tag ...
- docker push ...
- echo "build completed"
stage: build
tags:
- <tag>
deploy_staging:
stage: deploy
script:
- ./sh startup.sh
bash 脚本
#!/bin/bash
docker login -u root -p <pass>
docker pull <image>
docker-compose up -d
【问题讨论】:
-
您能否详细说明您希望通过此设置实现的目标。问题很混乱。
-
你想在容器内还是容器外执行你的外部脚本?
-
所以我目前的设置是这样的:我的服务器上有一个 docker gitlab 实例,当我将代码提交到我的存储库时,它会自动构建一个包含更新代码的 docker 映像并将其作为 gitlab 注册表推送到“最新”图像。现在,当构建完成时,bash 脚本应该会自动从 gitlab 注册表中提取新图像,docker 将其组合起来,以便重新创建为网站提供服务的容器。构建脚本 (gitlab-ci.yaml) 完全发生在 docker 容器内,所以我不知道它如何访问主机上的 bash 脚本。我希望这能解决问题?
标签: docker gitlab gitlab-ci-runner docker-in-docker