ホームページ  >  記事  >  Java  >  Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

王林
王林転載
2023-05-20 18:55:201757ブラウズ

1. 環境要件

次のサーバーのオペレーティング システムはすべて Centos7

  • サーバー A: Gitlab

  • Server B: GitlabRunner、Docker、docker-compose、Java1.8、maven3.6.3、git

ps: ここに GitlabRunner、Java1.8、maven3.6.3、git を配置できますサーバーBの場合 別途提案して独自にデプロイする Javaが必要な理由はパッケージ化に使用するmavenです。

デモンストレーションの便宜上、アプリケーション サーバー B は docker と docker-compose のみを使用する必要があります。

関連サービス構築チュートリアルについては、公式ドキュメントまたはその他の信頼できるサードパーティのブログ チュートリアルを参照してください。

現在のサービス バージョン

  • Gitlab: 14.9

  • GitlabRunner: 14.10.0

  • #docker: 20.10.14

  • docker-compose: 1.29.2

  • Git: 2.31.1、事前に確認してくださいGit が最新バージョンであると、後でエラーが発生します。

2. メインプロセス

私たちのメインプロセスは、Gitlab を通じてコードを管理し、Gitlab 独自の Gitlab CI/CD 関数を使用して GitlabRunner に登録してバインドすることです。

バインドが成功すると、コードが送信されるたびに GitlabRunner がアクティブになり、対応するスクリプトが実行されて自動デプロイされます。

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

3.GitlabRunner のインストールと登録

3.1 インストール

概要: 合計 2 つのステップがあります:

1. gitlab 公式ライブラリを追加します:

Debian/Ubuntu/Mintの場合

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

RHEL/CentOS/Fedora

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

2. コマンドのインストール:

For Debian /Ubuntu/Mint

sudo apt-get install gitlab-ci-multi-runner

For RHEL/CentOS/Fedora

sudo yum -y install gitlab-ci-multi-runner

3.2 登録の開始

1. Gitlab が自動的にデプロイする必要があるウェアハウスを開き、[設定] を選択します-》CI/CD -》ランナー。

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法#2. 以下に示すように、後で GitlabRunner を登録するときに使用される 2 つの最も重要な情報が表示されます。

#3.GitlabRunner 登録:

基本コマンド:

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

登録: gitlab-runner register

    登録済みのビューランナー: gitlab-runner list
  • すべての登録をキャンセル: gitlab-runner unregister --all-runners
  • サーバーに戻ります B. 実行します。コマンド
  • gitlab-runner register

    詳細な登録プロセス:

##GitLab インスタンスの URL (例: https://gitlab) を入力します。 .com/):

gitlab のサービス URL を入力してください

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

    登録トークンを入力してください:
  • トークンを入力してください。上の図を参照してください


  • ランナーの説明を入力してください:
  • ランナーの説明を入力してください


  • ランナーのタグを入力してください (カンマ区切り)

  • #この gitlab-runner のタグを入力してください。このタグは非常に重要です。後続の使用プロセス (yml ファイル、ジョブはタグを設定することで指定された Runner を選択します) で gitlab-runner を指定するには、このタグを使用する必要があります。 label)

  • ランナーのオプションのメンテナンス ノートを入力してください:

    オプションのメンテナンス ノートを入力してください

##実行者を入力してください: docker machine、docker-ssh machine、custom、docker -windows、docker-ssh、ssh、kubernetes、docker、Parallels、shell、virtualbox:

  • Enter キーを押して終了すると、config.
    が自動的に作成されます。

    gitlab バックグラウンド ランナー設定に戻り、ページを更新すると、新しく追加されたランナー:
  • 4 が表示されます。スクリプトを作成します! 重要!!!

コードを送信した後、シェル スクリプトを使用してビルドとデプロイメントを制御する方法を教えてください。 Gitlab は、ウェアハウスのルート ディレクトリに .gitlab-ci.yml という名前のファイルを作成するテンプレートを提供しました。

ここでは、springboot プロジェクトを例として、3 つのファイルを元のプロジェクト (.gitlab-ci.yml、Dockerfile、docker-compose.yml)、ファイルの場所と内容を以下に示します。必要に応じて内容を変更するだけです。いくつかの基本的なファイル構造を理解しておく必要があります。および Dockerfile と docker-compose.yml の構文 :

3 ファイルの場所のマップGitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

.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:
    - maven

ルート ディレクトリに Docker フォルダーを作成します。

Create 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/app

Create docker-compose.yml: Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

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

5. Test

ローカルアイデアはコードを dev ブランチに一度送信すると、Running

になる可能性があります。

点进去看,出现问题

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

这里提示我们的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后台,这里手动再执行一次:

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

最新的一次已通过 passed:

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

查看日志的方法,进第一个build查看日志,获取项目的路径(大家有更好的方法可以告诉下我)

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

cd到 项目的docker目录,使用

docker-compose logs -ft

测试接口:

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

6.常见问题

问题1:自动化部署build报错:

Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

解决方法,执行命令:

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

以上がGitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。