目次
1. 環境要件
現在のサービス バージョン
Create Dockerfile:
6.常见问题
ホームページ Java &#&チュートリアル Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法

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

May 20, 2023 pm 06:55 PM
docker springboot runner

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

pycharmでプロジェクトをパッケージ化する方法 pycharmでプロジェクトをパッケージ化する方法 Apr 25, 2024 am 03:54 AM

PyCharm でプロジェクトをパッケージ化するには 4 つの方法があります。 別個の実行可能ファイルとしてパッケージ化する: EXE 単一ファイル形式にエクスポートする。インストーラーとしてパッケージ化されています: Setuptools Makefile を生成してビルドします。 Docker イメージとしてパッケージ化する: イメージ名を指定し、ビルド オプションを調整してビルドします。コンテナとしてパッケージ化する: ビルドするイメージを指定し、ランタイム オプションを調整して、コンテナを起動します。

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

PHPマイクロサービスコンテナ化のアジャイル開発と運用 PHPマイクロサービスコンテナ化のアジャイル開発と運用 May 08, 2024 pm 02:21 PM

回答: PHP マイクロサービスは、アジャイル開発のために HelmCharts でデプロイされ、分離とスケーラビリティのために DockerContainer でコンテナ化されます。詳細説明: HelmCharts を使用して PHP マイクロサービスを自動的にデプロイし、アジャイル開発を実現します。 Docker イメージを使用すると、マイクロサービスの迅速な反復とバージョン管理が可能になります。 DockerContainer 標準はマイクロサービスを分離し、Kubernetes がコンテナの可用性とスケーラビリティを管理します。 Prometheus と Grafana を使用して、マイクロサービスのパフォーマンスと健全性を監視し、アラームと自動修復メカニズムを作成します。

golangプログラムの起動方法 golangプログラムの起動方法 Apr 21, 2024 am 12:47 AM

Go プログラムを開始するには、次の 4 つの方法があります。 コマンド ラインを使用する: go run main.go IDE の [実行] または [デバッグ] メニューから開始する コンテナ オーケストレーション ツール (Docker や Kubernetes など) を使用してコンテナを開始する systemd またはUnix システム上のスーパーバイザ システム サービスとして実行

Docker が LLama3 オープンソース大規模モデルのローカル展開を 3 分で完了 Docker が LLama3 オープンソース大規模モデルのローカル展開を 3 分で完了 Apr 26, 2024 am 10:19 AM

概要 LLaMA-3 (LargeLanguageModelMetaAI3) は、Meta Company が開発した大規模なオープンソースの生成人工知能モデルです。前世代のLLaMA-2と比べてモデル構造に大きな変更はありません。 LLaMA-3 モデルは、さまざまなアプリケーションのニーズやコンピューティング リソースに合わせて、小規模、中規模、大規模などのさまざまな規模のバージョンに分割されています。小型モデルのパラメータ サイズは 8B、中型モデルのパラメータ サイズは 70B、大型モデルのパラメータ サイズは 400B に達します。ただし、トレーニング中の目標は、マルチモーダルおよび複数言語の機能を達成することであり、その結果は GPT4/GPT4V に匹敵することが期待されます。 Ollama をインストールするOllama は、オープンソースの大規模言語モデル (LL) です。

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールするには、Dockerコンテナ(最も便利な場合は、互換性について心配する必要はありません)を使用して、事前コンパイルパッケージ(Windowsユーザー向け)を使用してソースからコンパイル(経験豊富な開発者向け)を含む多くの方法があります。公式文書は慎重に文書化され、不必要なトラブルを避けるために完全に準備します。

PHP 分散システムのアーキテクチャと実践 PHP 分散システムのアーキテクチャと実践 May 04, 2024 am 10:33 AM

PHP 分散システム アーキテクチャは、ネットワークに接続されたマシン全体にさまざまなコンポーネントを分散することで、スケーラビリティ、パフォーマンス、およびフォールト トレランスを実現します。このアーキテクチャには、アプリケーション サーバー、メッセージ キュー、データベース、キャッシュ、ロード バランサーが含まれます。 PHP アプリケーションを分散アーキテクチャに移行する手順は次のとおりです。 サービス境界の特定 メッセージ キュー システムの選択 マイクロサービス フレームワークの採用 コンテナ管理への展開 サービスの検出

PHP CI/CD を使用して迅速に反復するにはどうすればよいですか? PHP CI/CD を使用して迅速に反復するにはどうすればよいですか? May 08, 2024 pm 10:15 PM

回答: PHPCI/CD を使用して、CI/CD パイプラインの設定、自動化されたテストおよび展開プロセスなどの迅速な反復を実現します。 CI/CD パイプラインのセットアップ: CI/CD ツールを選択し、コード リポジトリを構成し、ビルド パイプラインを定義します。自動テスト: 単体テストと統合テストを作成し、テスト フレームワークを使用してテストを簡素化します。実際のケース: TravisCI の使用: TravisCI をインストールし、パイプラインを定義し、パイプラインを有効にして、結果を表示します。継続的デリバリーを実装します。展開ツールを選択し、展開パイプラインを定義し、展開を自動化します。利点: 開発効率が向上し、エラーが減少し、納期が短縮されます。

See all articles