目錄
前言
一、gitlab-runner docker安裝
二、gitlab-runner的注冊與使用
1.注冊
2. .gitlab-ci.yml 腳本編寫
總結
前言
前面搭建了gitlab與harbor ,現在就使用它們來實現自動化docker部署。所謂自動化部署,就是提交代碼到指定分支時自動觸發(fā)預先寫好的腳本,來實現打包,推送鏡像。想要實現這個功能還需要安裝gitlab-runner,下面就是記錄相關步驟的流程。
一、gitlab-runner docker安裝
這里仍然是docker-compose的形式來安裝,內容如下:
version: "3"
services:
gitlab-runner:
image: "gitlab/gitlab-runner:latest"
container_name: gitlab-runner
restart: always
privileged: true
volumes:
- "./data/gitlab-runner/config:/etc/gitlab-runner"
- "/var/run/docker.sock:/var/run/docker.sock"
重點:這里將內部的docker 掛載出來的路勁一定是虛機中安裝的docker路徑,因為要在內部調用外部的docker來執(zhí)行命令,如果不匹配就無法調用。
在docker-compose.yml 文件夾內執(zhí)行安裝命令后等待安裝完成就可以了
二、gitlab-runner的注冊與使用
1.注冊
注冊也是很簡單,下面提供代碼,在安裝gitlab-runner的虛擬機中執(zhí)行
?
sudo docker exec gitlab-runner gitlab-runner register -n \
--url http://192.168.31.8:15482/ \ #gitlab 的ip端口
--registration-token APRduxxLs6qye_A_K47y \ # gitlab 上的token
--tag-list "global-runner,gitlab-test" \
--executor docker \
--docker-image docker \
--docker-image alpine:latest \
--docker-volumes /home/msq/gitlab-runner/.m2:/root/.m2 \
--docker-volumes /home/msq/gitlab-runner/.npm:/root/.npm \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \ #掛載出來的docker
--description "global-runner,gitlab-test"
?執(zhí)行之后這里多出綠色圓點在線,表示注冊成功 了,gloabl-runner ,gitlab-test 表示tag 標簽,只有用到該標簽的腳本才會執(zhí)行
2. .gitlab-ci.yml 腳本編寫
該腳本我們可以在gitlab 項目下進入CI/CD 的編輯器,選擇分支,點擊配置就會自動創(chuàng)建
這是我的,我是配置在test分支上?
在這里我們可以編輯腳本,也可以點擊瀏覽模板進入github上學習官方的一些模板
我這里的腳本如下:
image: docker:stable
variables:
TAG: wxdt:0.0.1
PROJECT_NAME: wxdt
MAVEN_OPTS: "-Dmaven.repo.local=/root/.m2/repository"
cache:
key: dockerlayer-ci-cache
paths:
- .m2/repository
- /target/wxdt.jar
stages:
- package
- deploy
- push-image
maven-package:
image: maven:3.5-jdk-8-alpine
stage: package
tags:
- gitlab-test
script:
- mvn clean package -Dmaven.test.skip=true -P test $MAVEN_OPTS --settings=/root/.m2/settings.xml
cache:
key: dockerlayer-ci-cache
paths:
- target/*.jar
only:
- test
build-test:
stage: deploy
tags:
- gitlab-test
cache:
key: dockerlayer-ci-cache
paths:
- .m2/repository/
- target/*.jar
script:
- docker build -t $TAG .
- docker rm -f $PROJECT_NAME || true
- docker run -d --name $PROJECT_NAME --restart=always -v /home/msq/公共/msq/logs/wxdt:/logs -p 18082:18082 $TAG
after_script:
- docker rmi $(docker images -f "dangling=true" -q)
only:
- test
docker-push:
stage: push-image
tags:
- gitlab-test
before_script:
- docker login http://192.168.31.22 -u admin -p Harbor12345
script:
- docker tag $TAG 192.168.31.22/msq/$TAG
- docker push 192.168.31.22/msq/$TAG
only:
- test
簡單說明一下,我這里是三個步驟,maven打包 --》docker 啟動 --》鏡像推送倉庫
腳本執(zhí)行的頁面如下:
?點擊進入可以看到執(zhí)行日志
?推送成功后我們到倉庫中看到,下面就是推送成功了
?項目是否執(zhí)行成功進入虛機中執(zhí)行docker ps 查看
?可以看到項目在docker中運行成功了,可查看日志docker logs -f wxdt
?文章來源:http://www.zghlxwxcb.cn/news/detail-409985.html
總結
興趣是學習的最好的動力,再接再厲,繼續(xù)深入研究。文章來源地址http://www.zghlxwxcb.cn/news/detail-409985.html
到了這里,關于記錄使用gitlab實現Docker自動化部署的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!