Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法
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 が最新バージョンであると、後でエラーが発生します。
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
sudo apt-get install gitlab-ci-multi-runner
sudo yum -y install gitlab-ci-multi-runner
#2. 以下に示すように、後で GitlabRunner を登録するときに使用される 2 つの最も重要な情報が表示されます。
登録: gitlab-runner register
- 登録済みのビューランナー: gitlab-runner list
- すべての登録をキャンセル: gitlab-runner unregister --all-runners
- サーバーに戻ります B. 実行します。コマンド
- gitlab-runner register
詳細な登録プロセス:
##GitLab インスタンスの URL (例: https://gitlab) を入力します。 .com/):
- 登録トークンを入力してください:
- トークンを入力してください。上の図を参照してください
- ランナーの説明を入力してください
#この 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-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:
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
点进去看,出现问题
这里提示我们的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
测试接口:
6.常见问题
问题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
以上がGitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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