gpt4 book ai didi

docker - GitLab CI使用Docker审查环境

转载 作者:行者123 更新时间:2023-12-02 20:17:50 33 4
gpt4 key购买 nike

因此,在合并之前将环境部署在功能分支上进行审核是一个不错的选择。我有10多个具有相似结构和相同docker镜像的项目。前端有gulp,后端有php框架。
我在.gitlab-ci.yml中做了一些更改:

deploy:review:
stage: deploy
script:
- rsync -av --delete httpdocs/ /home/gitlab-runner/dev_env/$CI_BUILD_REF_NAME.$CI_PROJECT_NAME.$CI_PROJECT_NAMESPACE
environment:
name: review/$CI_BUILD_REF_NAME
url: http://$CI_BUILD_REF_NAME.$CI_PROJECT_NAME.$CI_PROJECT_NAMESPACE.env.mydomain.com
only:
- branches
except:
- master

而且我配置了nginx来为每个子域加载文件夹。多数民众赞成在审查前沿部分工作。
但我想将docker用于后端部分。所以我需要以某种方式在gitlab所在的同一服务器上启动docker。然后,我需要保留所有端口的生成,也许还要保留nginx重定向例程。最后一部分,合并后或几天后,我需要移动评论 docker 。

我相信这个 https://github.com/jwilder/nginx-proxy可以帮助我控制端口,但是我需要生成它们(使用CI构建ID,因为端口似乎有问题,有一天我将构建#65536),并且仍然对自动启动/停止/销毁容器有疑问。

可能有一些针对独立服务器的开源docker cloudsolution吗?

最佳答案

第一部分解决了。

jwilder / nginx代理-完全获取端口例程。

我在startap上运行代理:

docker run -d -p 80:80 -p 443:443 --name "dnginx" -v /root/certs:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro -v /var/log/nginx-proxy/:/var/log/nginx/ jwilder/nginx-proxy

然后像这样运行每个容器:
sudo docker run -d --name "nginx-test" --expose 80 --env VIRTUAL_HOST=test.domain.com kitematic/hello-world-nginx

注意VIRTUAL_HOST = test.domain.com和--expose 80

--env VIRTUAL_HOST = test.domain.com
会说nginx-proxy wich子域与容器链接

-暴露80
如果您的容器未公开端口本身。这将在docker网络内部打开80端口。并且nginx-proxy将自动生成新的配置,为您的子域添加一部分。

第二部分解决:

我在gitlabRunner config.toml中为自己的dockerRunner设置了特权。然后我的转轮工作是这样的:
deploy to review:
image: docker:latest
tags:
- privileged
stage: deploy
script:
- mkdir -p /home/devenv/$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME/project
- cp -r ./* /home/devenv/$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME/project
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
- ( docker stop $CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME && docker rm $CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME ) || echo "nothing to stop, starting new container"
- docker run -d --env VIRTUAL_HOST="$CI_BUILD_REF_NAME.$CI_PROJECT_NAME.$CI_PROJECT_NAMESPACE.mydomain.com" --name "$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME" -v /home/devenv/$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME/project:/home/project -v /home/devenv/$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME/logs:/var/logs myrepo.com:4567/group/projectimage
- docker exec $CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME /bin/sh /home/project/build.sh
environment:
name: review/$CI_BUILD_REF_NAME
url: http://$CI_BUILD_REF_NAME.$CI_PROJECT_NAME.$CI_PROJECT_NAMESPACE.mydomain.com
only:
- branches
except:
- master

其中build.sh是npm + bower安装命令和gulp任务。

关于docker - GitLab CI使用Docker审查环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41142909/

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