Centos7.6 安装应用docker,docker-compose (个人Centos是用Hyper-V跑的分了8G的内存,阿里云2G根本跑不起来gitlab)html
为了保证个人Centos环境干净因此个人gitlab与gitlab-runner都是采用docker服务运行,包括后续的runner的工做形式(executor)也是选的docker。mysql
准备工做:linux
拉取镜像:这步骤耗时挺长的,耐心等待吧(若是这个镜像没有了,你能够去hub.docker.com搜一下对应的镜像)git
docker pull gitlab/gitlab-ce:latest docker pull gitlab/gitlab-runner:latest docker pull docker:stable docker pull mcr.microsoft.com/dotnet/core/sdk
在Centos服务器上建立docker-compose.yml文件并运行web
docker-compose run -d
gitlab: image: 'gitlab/gitlab-ce:latest' restart: always hostname: '192.168.2.2' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://hts92.wicp.vip:8989'#这里须要更换成你的固定ip或局域网IP地址(我我的作法是用的动态域名。作的端口映射,若是你是内网作demo无所谓) ports: - '8989:8989' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab' gitlab-runner: image: 'gitlab/gitlab-runner:latest' container_name: 'gitlab-runner' restart: 'always' volumes: - '/srv/gitlab-runner/confg:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock'
到此 gitlab 与gitlab-runner 已经搭建好了。(第一次登录时须要你设置root用户密码这里我就不截图了,由于我已经设置完了。)sql
接下来进入gitlab 新建个项目。项目名随意,docker
进入刚建好的项目shell
dotnet new webapi -n user.api --no-https
添加镜像检测删除脚本到项目根目录(后续ci构建脚本会用到,每次重新编译docker file 时 会帮你删除掉以前的实例跟镜像):保存为check-images.sh 放到项目根目录api
if [ $(docker ps -a --format {{.Names}} | grep user-api) ] then docker rm -f user-api docker rmi user-api fi
stages: - build - deploy # 构建 build-job: stage: build only: - master cache: untracked: true script: - dotnet restore - dotnet publish -o ./out -c Release artifacts: # 能够缓存在gitlab的流水线记录中,供直接下载 expire_in: 30 days paths: - out/ tags: - 01-user-api-builder # 发布正式 deploy-job: stage: deploy only: - master dependencies: - build-job # 这里必定要依赖build-job,否则dockerfile里面的out目录没法使用 script: - ls out/ - docker ps - sh ./check-images.sh - docker build -t user-api . # 这里能够添加将生成好的image上传到dockerhub或者docker本地仓库 ### 若是生成的镜像须要统一上传到仓库管理,则后面的逻辑能够分离到另一个runner去执行 # 这里能够添加从dockerhub或本地仓库拉取指定镜像 - docker run -d --name user-api -p 8080:80 user-api tags: - 01-user-api-deploy
建立 Dockerfile文件 放到项目根目录 (这里值得注意的是mcr.microsoft.com/dotnet/core/sdk 镜像名,要跟咱们准备环境时候的镜像名保持一致,要否则build 时还须要在拉取 浪费时间,固然你可能够换成runtime环境的。好处就是编译镜像小,用我这个编译镜像大)缓存
FROM mcr.microsoft.com/dotnet/core/sdk WORKDIR /app COPY out/ /app ENTRYPOINT [ "dotnet", "/app/user.api.dll" ]
以上内容一同传至 gitlab刚建好的项目
gitlab项目目录结构以下
找到rnner信息
记得替换吊对应信息。(--url,--registration-toke)
docker exec -it gitlab-runner gitlab-runner register -n \ --url http://hts92.wicp.vip:8989/ \ --registration-token QJiAZYz3KSJyhWfsHKhC \ --executor docker \ --tag-list "01-user-api-builder" \ --description "01-user-api-builder" \ --docker-image "mcr.microsoft.com/dotnet/core/sdk" \
(值得注意的是: --docker-volumes /var/run/docker.sock:/var/run/docker.sock,当时没有这句话 个人docker实例没法跟docker容器(docker run docker)自己通信 。这个问题让我找了进一天的时间)
docker exec -it gitlab-runner gitlab-runner register -n \ --url http://hts92.wicp.vip:8989/ \ --registration-token QJiAZYz3KSJyhWfsHKhC \ --executor docker \
--tag-list "01-user-api-deploy" \ --description "01-user-api-deploy" \ --docker-image "docker:stable" \ --docker-volumes /var/run/docker.sock:/var/run/docker.sock
以下表明runner 已经开始工做了而且执行成功。
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE user-api latest 62eafc3e4bf6 About a minute ago 1.74GB mcr.microsoft.com/dotnet/core/sdk 20190726 3af77ac73731 2 days ago 1.74GB mcr.microsoft.com/dotnet/core/sdk latest 3af77ac73731 2 days ago 1.74GB gitlab/gitlab-runner-helper x86_64-d0b76032 f8d183475601 2 days ago 52.4MB docker stable c4154a2b47a1 4 days ago 216MB mysql/mysql-server latest 12a8d88596c0 4 days ago 294MB gitlab/gitlab-runner latest 4142c6fc05d4 2 weeks ago 410MB gitlab/gitlab-ce latest 15563c211d40 3 weeks ago 1.8GB microsoft/mssql-server-linux latest 314918ddaedf 7 months ago 1.35GB registry 2.3 83139345d017 3 years ago 166MB [root@localhost ~]#
2ced458eea91 user-api "dotnet /app/User.Ap…" 21 seconds ago Up 20 seconds 0.0.0.0:8080->80/tcp user-api cfed5894c526 microsoft/mssql-server-linux "/opt/mssql/bin/sqls…" 3 minutes ago Up 3 minutes 0.0.0.0:1433->1433/tcp sqlserver d713e32ee388 gitlab/gitlab-ce:latest "/assets/wrapper" 3 days ago Up 39 minutes (healthy) 22/tcp, 80/tcp, 443/tcp, 0.0.0.0:8989->8989/tcp gitlab_gitlab_1 e0cf226629d3 registry:2.3 "/bin/registry /etc/…" 3 days ago Up 39 minutes 0.0.0.0:5000->5000/tcp gitlab_registry_1 eab855f64938 gitlab/gitlab-runner:latest "/usr/bin/dumb-init …" 3 days ago Up 39 minutes gitlab-runner
以上容器已经运行成功
(个人Centos虚拟机地址192.168.2.2)
看着几行代码搞定,可是因为第一次作也耗时将近两天,随后在作就简单多了。整理出以上内容给你们分享。 如下为参考文章。有问题留言。
参考文章
https://www.lizenghai.com/archives/5180.html#Runner
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
https://www.jianshu.com/p/43ffba076bc9