Sistem pengendalian pelayan berikut semuanya Centos7
Pelayan A: Gitlab
pelayan B: GitlabRunner, Docker, docker-compose, Java1.8, maven3.6.3, git
ps: Di sini anda boleh meletakkan GitlabRunner, Java1.8, maven3.6.3, git pelayan B Ia dicadangkan secara berasingan dan digunakan secara bebas Sebab Java diperlukan adalah maven, yang digunakan untuk pembungkusan.
Untuk kemudahan demonstrasi, pelayan aplikasi B hanya perlu menggunakan docker dan docker-compose.
Untuk tutorial pembinaan perkhidmatan berkaitan, sila rujuk dokumen rasmi atau tutorial blog pihak ketiga yang boleh dipercayai!
Gitlab: 14.9
GitlabRunner: 14.10.0
docker: 20.10.14
docker-compose: 1.29.2
Git: 2.31.1, semak terlebih dahulu sama ada Git adalah versi terkini, jika tidak ralat akan berlaku kemudian.
Proses utama kami ialah mengurus kod melalui Gitlab, dan kemudian menggunakan fungsi CI/CD Gitlab yang disertakan dengan Gitlab untuk mendaftar dan mengikat kepada GitlabRunner.
Setelah pengikatan berjaya, GitlabRunner akan diaktifkan setiap kali kod diserahkan dan skrip yang sepadan akan dilaksanakan untuk penggunaan automatik.
Untuk Debian/Ubuntu/Mint
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
Untuk RHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
sudo apt-get install gitlab-ci-multi-runner
Untuk RHEL/CentOS/Fedora
sudo yum -y install gitlab-ci-multi-runner
3.2 Mulakan pendaftaran
2 Seperti yang ditunjukkan di bawah, anda boleh melihat dua maklumat yang paling kritikal, yang akan digunakan semasa mendaftar GitlabRunner nanti.
3.Pendaftaran GitlabRunner:
Arahan asas:
gitlab-runner register
Kembali Dalam tetapan Pelari latar belakang gitlab, muat semula halaman dan anda akan melihat Pelari baharu:
4 Buat skrip! 🎜>
Apabila diserahkan Selepas pengekodan, bagaimanakah kita harus menggunakan skrip Shell untuk mengawal binaan dan penggunaan? Gitlab telah memberikan kami templat, iaitu untuk mencipta fail bernama: .gitlab-ci.yml dalam direktori akar gudang Di sini kami mengambil projek springboot sebagai contoh dan menambah 3 fail pada projek asal (.gitlab-ci.yml, Dockerfile, docker-compose.yml), lokasi dan kandungan fail ditunjukkan di bawah. Cuma ubah suai kandungan mengikut keperluan anda. Anda perlu biasa dengan beberapa struktur fail asas sintaks Dockerfile dan docker-compose.yml :3 peta lokasi fail.gitlab-ci.yml
stages: - build - deploy_dev - clean # 打包镜像 build: stage: build only: - dev script: - $MAVEN_HOME/bin/mvn clean package '-Dmaven.test.skip=true' - cp ./XXX/target/XXX.jar docker/ - cd docker - docker build -t dev/XXX:v1.0.0 . tags: - maven # 部署开发服务器 deploy_dev: stage: deploy_dev only: - dev script: - cd docker - docker-compose down - docker-compose up -d tags: - maven #清理虚悬镜像 clean: stage: clean only: - dev script: - docker rmi $(docker images -q -f dangling=true) tags: - mavenBuat folder Docker dalam direktori root,Buat Dockerfile:
#FROM java:8 #java:8这个镜像体积有643MB,打包镜像后体积太大了,不建议使用 # openjdk:8-jre-alpine 体积最小,只有85MB FROM openjdk:8-jre-alpine # 以下2个RUN解决 java验证码接口报错的问题, RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main\n\ https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" > /etc/apk/repositories RUN apk --update add curl bash ttf-dejavu && \ rm -rf /var/cache/apk/* COPY . /opt/app WORKDIR /opt/appBuat docker-compose.yml:
version: '3.1' services: education-course: container_name: dev-XXX-server restart: always image: dev/XXX:v1.0.0 network_mode: "host" volumes: - /opt/XXX-server/logs:/XXX/logs command: java -jar -Xms1024m -Xmx1024m -Duser.timezone=GMT+08 xxx.jar --spring.profiles.active=dev5 menyerahkan kod sekali ke cawangan dev, dan anda sudah boleh Lari
点进去看,出现问题
这里提示我们的git版本太低了
当前git版本:
[root@localhost local]# git --version git version 1.8.3.1
升级最新版git后:
[root@localhost yum.repos.d]# git --version git version 2.24.4
回到gitlab后台,这里手动再执行一次:
最新的一次已通过 passed:
查看日志的方法,进第一个build查看日志,获取项目的路径(大家有更好的方法可以告诉下我)
cd到 项目的docker目录,使用
docker-compose logs -ft
测试接口:
问题1:自动化部署build报错:
解决方法,执行命令:
sudo chmod 777 /var/run/docker.sock
问题2:docker apline temporary error (try again later) 错误
没有dns导致的
在本机系统上创建daemon文件添加dns,然后重启docker
vim /etc/docker/daemon.json { "dns": ["8.8.8.8"] } sudo service docker restart
Atas ialah kandungan terperinci Cara Gitlab-runner+Docker melaksanakan penempatan automatik projek SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!