ホームページ >Java >&#&チュートリアル >Gitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法
次のサーバーのオペレーティング システムはすべて 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
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bashRHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash2. コマンドのインストール:For Debian /Ubuntu/Mint
sudo apt-get install gitlab-ci-multi-runnerFor RHEL/CentOS/Fedora
sudo yum -y install gitlab-ci-multi-runner3.2 登録の開始1. Gitlab が自動的にデプロイする必要があるウェアハウスを開き、[設定] を選択します-》CI/CD -》ランナー。
#2. 以下に示すように、後で GitlabRunner を登録するときに使用される 2 つの最も重要な情報が表示されます。
登録: 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 は、ウェアハウスのルート ディレクトリに .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 フォルダーを作成します。
#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=dev5. Testローカルアイデアはコードを dev ブランチに一度送信すると、Running になる可能性があります。
点进去看,出现问题
这里提示我们的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
以上がGitlab-runner+Docker が SpringBoot プロジェクトの自動デプロイメントを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。