杂文(12)在docker中部署gitlab-runner实现springboot项目的gitlab-CI(施工中)

本文详细介绍了如何在Docker环境下部署GitLab Runner以及使用它来构建和部署SpringBoot项目。从安装Docker,构建镜像,到解决内部服务器域名解析问题,再到Dockerfile的编写和错误排查,每个步骤都有清晰的说明。同时,文章还分享了如何利用GitLab CI减少构建时间以及遇到的问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最后更新于2021年5月28日 17:25:24
网上找了好多资料,心力交瘁终于是完成了自己项目的部署,想着造福大众,写点东西放上来,也算是为社区做点贡献。

Docker Gitlab CI 部署 Spring Boot 项目

准备工作:

安装docker:

apt install docker //安装docker
docker -v //查看安装是否成功

打jar包,build镜像,run容器,测试一下

先把自己的项目手动搞到docker里试一试,回头做CI的时候能少好多麻烦,对于菜鸡来说也有助于理解。太简单了,这部分内容我放到本文最后了。

在docker中部署gitlab-runner容器

拉取runner镜像

sudo docker pull gitlab/gitlab-runner:latest

run起容器来

docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest

这里的-v /srv/gitlab-runner/config:/etc/gitlab-runner一定要暴露出来,方便修改配置;docker.sock不知道干啥的,回头研究一下。
接下来在gitlab上注册runner。

docker exec -it gitlab-runner gitlab-ci-multi-runner register

fatal: unable to access ‘http://XX.XX/XX/XX.git/’: Could not resolve host: XX.XX

运行docker-runner容器的命令是这样的。

docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest

这里将config文件从容器里映射到宿主机了。

我的问题原因是仓库使用的公司内部服务器,根据域名pull不到gitlab上的仓库,最后在/srv/gitlab-runner/config.toml里面加了这样一句,相当于绕过域名,直接取了域名的ip地址来克隆仓库。

[[runners]]
  name = "spring and docker runner"
  url = "http://17x.xxx.xxx.xxx/"
  token = "XXXXXXXXXXXXXXXXXX"
  executor = "docker"
  clone_url = "http://17x.xxx.xxx.xxx" //就这句就这句就这句就这句就这句就这句

gitlab-runner执行ci报错fatal: unable to access 'http://gitlab-ci-token:xxxxxx@ip/xxx/citest.git 谢谢这个大哥的方法。

Gitlab -ci :前后端项目加载缓存,减少构建时间
这个真的好使,无脑复制粘贴就行,大大减少maven打包阶段的耗时。
在这里插入图片描述

打包完成后根据Dockerfile添加镜像,好坑,坑死我了。报错如下:

Step 4/6 : ADD enhanced-0.0.2-Receiver.jar app.jar
 ADD failed: file not found in build context or excluded by .dockerignore: stat enhanced-0.0.2-Receiver.jar: file does not exist

关键就在于上面的maven-package:artifacts:name,还有paths这两项,还有Dockerfile里面一定要写/target/enhanced-0.0.2-Receiver.jar这样。这几个名字必须得统一了。
在这里插入图片描述

简单的jar包部署

在/home目录或任何你喜欢的地方新建文件夹,我喜欢这样建:/home/{用户名}/docker/{项目名}/
该目录下放Dockerfile和你打的jar包。
我从网上抄的Dockerfile,这个很好理解,很简单。

# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER eangulee <eangulee@gmail.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD qqqqqqq.jar app.jar 
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

cd到该目录下,输入build镜像的命令,最后面一定要有个点

docker build -t qqqqqqq . 

docker images 查看当前所有镜像。
run容器:一堆参数随便加加(杂文(10)docker常用命令及其参数总结),反正测试嘛。

docker run --name=qqqqqqq -dit --restart=always -p 6324:6324 qqqqqqq

能跑就行,要啥自行车,删掉制造的垃圾。

docker stop qqqqqqq
docker rm qqqqqqq
docker rmi qqqqqqq
### 使用 Docker 部署 GitLab Runner 的指南 为了使用 Docker 容器化技术来部署 GitLab Runner,可以遵循一系列特定的操作流程。这不仅简化了环境设置过程,还提高了不同开发阶段的一致性和可移植性。 #### 准备工作 确保本地机器上已经安装并配置好 Docker 环境。如果尚未完成此操作,则需先访问官方文档获取详细的安装指导[^2]。 #### 下载 GitLab Runner 镜像 通过执行如下命令下载最新的 GitLab Runner Docker 镜像: ```bash docker pull gitlab/gitlab-runner:latest ``` #### 创建专用网络 (推荐) 为提高容器间通信的安全性和效率,建议创建一个新的自定义桥接网络用于 GitLab 和其关联服务之间的交互: ```bash docker network create gitlab-network ``` #### 启动 GitLab Runner 容器实例 启动 GitLab Runner 实例时指定必要的参数以实现最佳性能和功能支持。下面是一个典型的 `docker run` 命令示例,其中包含了注册 token (`REGISTRATION_TOKEN`) 及其他重要选项: ```bash docker run -d --name gitlab-runner \ --network gitlab-network \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest ``` 这里 `-v` 参数用来挂载主机上的路径至容器内部;特别是 `/var/run/docker.sock` 文件映射允许 GitLab Runner 访问宿主机的 Docker Daemon 进而构建项目镜像。 #### 注册 GitLab RunnerCI/CD 流水线 一旦容器成功运行起来之后,就需要将其注册到目标 GitLab 实例中去参与持续集成管道的工作。可以通过向上述创建好的容器发送 HTTP 请求或者直接进入容器内部执行注册脚本来达成目的。具体做法取决于所使用的 GitLab 版本和个人偏好。 对于基于 Web UI 方式的注册方法,请参照官方手册中的说明进行操作[^3]。 #### 自动化配置 Maven 私服连接 当涉及到 Java 或者 Kotlin 类型的应用程序时,在 `.gitlab-ci.yml` 中添加适当的前置指令能够帮助自动复制预设好的 `settings.xml` 至默认位置从而顺利完成依赖解析任务。 ```yaml before_script: - mkdir -p ~/.m2 - cp .mvn/conf/settings.xml ~/.m2/ ``` 以上步骤展示了如何利用 Docker 技术快速搭建起一个可用的 GitLab Runner 并使其参与到自动化测试与发布过程中来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值