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

最后更新于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

猜你喜欢

转载自blog.csdn.net/weixin_44445507/article/details/117362379