Les systèmes d'exploitation des serveurs suivants sont tous Centos7
Serveur A : Gitlab
Serveur B : GitlabRunner, Docker, docker-compose, Java1.8, maven3.6.3, git
ps : Ici, vous pouvez séparer GitlabRunner, Java1.8, maven3.6.3 et git du serveur B et les déployer indépendamment. La raison pour laquelle Java est nécessaire est maven, qui est utilisé pour l'empaquetage.
Pour faciliter la démonstration, le serveur d'applications B n'a besoin que d'utiliser docker et docker-compose.
Pour les didacticiels de construction de services associés, veuillez vous référer aux documents officiels ou à d'autres didacticiels de blog tiers fiables !
Gitlab : 14.9
GitlabRunner : 14.10.0
docker : 20.10.14
docker-compose : 1.29.2
Git : 2.31 .1, vérifiez à l'avance si Git est la dernière version, sinon des erreurs se produiront plus tard.
Notre processus principal consiste à gérer le code via Gitlab, puis à utiliser la fonction Gitlab CI/CD fournie avec Gitlab pour l'enregistrer et le lier avec GitlabRunner.
Une fois la liaison réussie, GitlabRunner sera activé à chaque fois que le code sera soumis et le script correspondant sera exécuté pour un déploiement automatique.
Pour Debian/Ubuntu/Mint
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
Pour RHEL/CentOS. /Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
Pour Debian/Ubuntu/Mint
sudo apt-get install gitlab-ci-multi-runner
Pour RHEL/CentOS/Fedora
sudo yum -y install gitlab-ci-multi-runner
1 Ouvrez l'entrepôt dont Gitlab a besoin pour déployer automatiquement, sélectionnez Paramètres-. 》CI/CD -》Coureurs.
2. Comme indiqué ci-dessous, vous pouvez voir les deux informations les plus critiques, qui seront utilisées lors de l'enregistrement ultérieur de GitlabRunner
3. gitlab-runner register
gitlab-runner register
Entrez l'URL du service de gitlab
Entrez le jeton , reportez-vous à l'image ci-dessus
Entrez la description du coureur
Retournez aux paramètres de l'arrière-plan de gitlab Runner, actualisez la page et vous verrez le nouveau Runner :
3 Carte d'emplacement du fichier
.gitlab-ci.ymlstages: - 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: - mavenCréez le dossier Docker dans le répertoire racine, Créez un fichier Docker :
#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/appCréez 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=dev
Soumettez une fois le code de l'idée locale à la branche dev, et elle est déjà en cours d'exécution
点进去看,出现问题
这里提示我们的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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!