gitlab 持续集成实践

本文详细介绍了如何在CentOS系统上安装Docker,配置镜像源,使用非root权限管理,以及部署SpringBoot和Vue前端项目,并结合GitLabCI进行自动化构建和部署的过程。

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

1、centOS 安装docker

安装准备

 sudo yum install -y yum-utils
 sudo yum install psmisc
 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装docker

sudo yum install docker-ce docker-ce-cli containerd.io

启动docker

sudo systemctl start docker

2、配置docker镜像

创建或修改 /etc/docker/daemon.json 文件,并写入以下内容

{ "registry-mirrors": [ "https://mirror.ccs.tencentyun.com" ] }

依次执行以下命令,重新启动docker服务。

systemctl daemon-reload
service docker restart

检查是否生效

docker info

3、以非 root 用户身份管理 Docker

创建docker组。

sudo groupadd docker

将您的用户添加到docker组中。

sudo usermod -aG docker $USER

在 Linux 上,您还可以运行以下命令来激活对组的更改:

newgrp docker 

4、安装常用镜像

openjdk 11

docker pull openjdk:11

maven

docker pull maven:3.8.5-openjdk-11

nginx

docker pull nginx:stable-alpine

node

docker pull node:lts-alpine

5、安装gitlab-runner

拉取镜像

docker pull gitlab/gitlab-runner:alpine-v14.0.1

启动镜像脚本

su $USER
mkdir ~/docker_mnt
mkdir ~/docker_sh
mkdir docker_mnt/gitlab-runner
vim docker_sh/gitlab-runner.sh
vim docker_sh/gitlab-runner-register.sh
#/bin/bash

name="gitlab-runner"
docker rm -f $name
docker run -d \
       --name $name \
       --restart always \
       -v /home/jhit/docker_mnt/gitlab-runner/config:/etc/gitlab-runner \
       -v /var/run/docker.sock:/var/run/docker.sock \
       gitlab/gitlab-runner:alpine-v14.0.1

启动成功后注册到gitlab仓库

docker exec gitlab-runner gitlab-runner register -n \
       --url http://HIDE_MY_GIT_HOST/  \
       --registration-token HIDE_MY_TOKEN \
       --tag-list jhit_128 \
       --executor docker \
       --docker-image docker \
       --docker-volumes /root/.m2:/root/.m2 \
       --docker-volumes /root/.npm:/root/.npm \
       --docker-volumes /root/.yarn:/root/.yarn \
       --docker-volumes /var/run/docker.sock:/var/run/docker.sock \
       --description "gitlab runner 172.20.203.102"

6、SpringBoot后端项目配置

Dockerfile配置

# 该镜像需要依赖的基础镜像
FROM openjdk:11
# 命令在下面的文件夹下运行
WORKDIR /home
# 复制文件
COPY /target/databoard-0.0.4-SNAPSHOT.jar databoard-0.0.4-SNAPSHOT.jar
# 声明服务运行在8093端口
EXPOSE 8011
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar", "databoard-0.0.4-SNAPSHOT.jar", "--spring.profiles.active=dev"]
# 指定维护者的名字
MAINTAINER kjj

.gitlab-ci.yml

stages:
  - package
  - deploy
test-package:
  image: maven:3.8.5-openjdk-11
  stage: package
  tags:
    - juhua
  cache:
    key: ${CI_PIPELINE_ID}
    paths:
      - target/
  script:
    - echo "Packaging application..."
    - mvn clean && mvn -Dfile.encoding=UTF-8 -DskipTests=true install && mvn -Dfile.encoding=UTF-8 -DskipTests=true package
    - echo "Application successfully packaged."
  only:
    refs:
      - master
test-deploy:
  stage: deploy
  tags:
    - juhua
  cache:
    key: ${CI_PIPELINE_ID}
    paths:
      - target/
  script:
    - echo "Deploying application..."
    - pwd
    - docker build . -t ${CI_PROJECT_NAME}:juhua-${CI_PIPELINE_ID}
    - docker stop zjrd-databoard && docker rm zjrd-databoard
    - docker run --name zjrd-databoard -p 7013:8011 -d ${CI_PROJECT_NAME}:juhua-${CI_PIPELINE_ID}
    - ls
    - echo "Application successfully deployed."
  only:
    refs:
      - master

7、Vue前端项目配置

Dockerfile

FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm config set registry http://mirrors.cloud.tencent.com/npm/
RUN npm install --legacy-peer-deps
COPY . .
RUN npm run build:test

# production stage
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

.gitlab-ci.yml

image: docker
stages:
  - deploy
test-deploy:
  stage: deploy
  tags:
    - juhua
  only:
    refs:
      - master
  script:
    - echo "Deploying application..."
    - pwd
    - ls
    - docker stop ${CI_PROJECT_NAME} && docker rm ${CI_PROJECT_NAME}
    - docker build . -t ${CI_PROJECT_NAME}:juhua-${CI_PIPELINE_ID}
    - docker run --name ${CI_PROJECT_NAME} -p 6011:80 -d ${CI_PROJECT_NAME}:juhua-${CI_PIPELINE_ID}
    - ls
    - echo "Application successfully deployed."

package.json

"build:test": "vue-cli-service build --mode test",
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值