国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker 配置 Gitea + Drone 搭建 CI/CD 平臺

這篇具有很好參考價值的文章主要介紹了Docker 配置 Gitea + Drone 搭建 CI/CD 平臺。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Docker 配置 Gitea + Drone 搭建 CI/CD 平臺

配置 Gitea 服務(wù)器來管理項目版本

本文的IP地址是為了方便理解隨便打的,不要亂點

首先使用 docker 搭建 Gitea 服務(wù)器,用于管理代碼版本,數(shù)據(jù)庫選擇mysql

Gitea 服務(wù)器的 docker-compose.yml 配置文件如下:

version: "3"

services:
    server:
        image: gitea/gitea:1.19.3
        container_name: gitea
        environment:
            - USER_UID=1000
            - USER_GID=1000
            - GITEA__database__DB_TYPE=mysql
            - GITEA__database__HOST=123.45.54.123:3306
            - GITEA__database__NAME=gitea
            - GITEA__database__USER=root
            - GITEA__database__PASSWD=123456
        restart: always
        volumes:
            - ./gitea:/data
            - /etc/timezone:/etc/timezone:ro
            - /etc/localtime:/etc/localtime:ro
        ports:
            - "3002:3000"
            - "2222:22"

運行前先去數(shù)據(jù)庫服務(wù)器中新建一個名為 gitea 的數(shù)據(jù)庫

命令:CREATE DATABASE gitea

編寫完成后在當(dāng)前目錄下運行 docker compose up -d 即可運行 docker 容器

搭建 Drone 服務(wù)器與 Drone Runner

再使用 Docker 搭建 Drone 服務(wù)器,用于自動化部署的 CI/CD 平臺

瀏覽器中打開上一步配置好的Gitea,點擊右上角頭像,點擊設(shè)置,進入設(shè)置頁面

點擊應(yīng)用選項卡,在頁面底部輸入應(yīng)用名稱(隨便寫一個就好,例如:Drone CI),輸入重定向URI(Drone服務(wù)鏈接+’/login‘,如’http://123.45.54.123:3991/login‘)

點擊創(chuàng)建應(yīng)用

客戶端ID即為下方配置文件的DRONE_GITEA_CLIENT_ID

客戶端密鑰即為下方配置文件的DRONE_RPC_SECRET

記錄后點擊完成即可

接著在服務(wù)器中輸入

openssl rand -hex 16

生產(chǎn)一個密鑰,記錄后寫到下方配置文件的DRONE_RPC_SECRET中

drone 服務(wù)器的 docker-compose.yml 配置文件如下:

version: "3"

services:
    drone:
        image: drone/drone:2
        container_name: drone
        environment:
            - DRONE_GITEA_SERVER=http://123.45.54.123:3002
            - DRONE_GITEA_CLIENT_ID=客戶端ID
            - DRONE_GITEA_CLIENT_SECRET=客戶端密鑰
            - DRONE_RPC_SECRET=生成的密鑰
            - DRONE_SERVER_HOST=123.45.54.123:3991
            - DRONE_SERVER_PROTO=http
            - DRONE_USER_CREATE=username:Gitea,admin:true # 開啟管理員賬戶
        restart: always
        volumes:
            - ./drone:/data
        ports:
            - 3991:80
            - 3992:443

其中 3002 是上一步搭建 Gitea 服務(wù)器的端口號,3991 和 3992 是新開的端口號。

編寫完成后在當(dāng)前目錄下運行 docker compose up -d 即可運行 docker 容器

Drone Runner 相當(dāng)于 Worker ,用于執(zhí)行任務(wù)

drone runner的 docker-compose.yml 配置文件如下:

DRONE_RUNNER_NAME是隨便起的,3993 同樣是新開的端口

version: "3"

services:
    runner:
        image: drone/drone-runner-docker:1
        container_name: runner
        environment:
            - DRONE_RPC_PROTO=http
            - DRONE_RPC_HOST=123.45.54.123:3991  # Drone服務(wù)器的地址
            - DRONE_RPC_SECRET=生成的密鑰,應(yīng)與Drone服務(wù)器的一致
            - DRONE_RUNNER_CAPACITY=2
            - DRONE_RUNNER_NAME=my-first-runner
        restart: always
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
        ports:
            - 3993:3000

同樣編寫完成后在當(dāng)前目錄下運行 docker compose up -d 即可運行 docker 容器

一定一定一定要注意不要亂加 ‘/’ ,不亂寫 ‘http://’,不然可能踩坑,按照上方配置文件作為模板改寫即可

至此,環(huán)境搭建完成,接下來用編寫項目進行測試

項目測試

在代碼生成器項目根目錄下添加以下三個配置文件

.drone.yml

kind: pipeline # 定義對象類型,還有secret和signature兩種類型
type: docker # 定義流水線類型,還有kubernetes、exec、ssh等類型
name: test_drone # 定義流水線名稱

steps: # 定義流水線執(zhí)行步驟,這些步驟將順序執(zhí)行
  - name: build-jar # 流水線名稱
    image: maven:3.8.5-openjdk-8 # 定義創(chuàng)建容器的Docker鏡像
    volumes: # 將容器內(nèi)目錄掛載到宿主機,倉庫需要開啟Trusted設(shè)置
      - name: maven-cache
        path: /home/Gettler/.m2 # 將maven下載依賴的目錄掛載出來,防止重復(fù)下載
      - name: maven-build
        path: /app/build/generator # 將應(yīng)用打包好的Jar和執(zhí)行腳本掛載出來
    commands:
      - $MAVEN_HOME/bin/mvn -v
      - $MAVEN_HOME/bin/mvn clean package -DskipTests=true
      # 將打包后的jar包,拷貝到 /root/testDrone 目錄
      - cp target/*.jar  /app/build/generator
      - cp Dockerfile /app/build/generator
      - cp run.sh /app/build/generator
  - name: build-docker # 流水線名稱
    image: plugins/docker
    volumes: # 將容器內(nèi)目錄掛載到宿主機,倉庫需要開啟Trusted設(shè)置
      - name: maven-build
        path: /app/build/generator # 將應(yīng)用打包好的Jar和執(zhí)行腳本掛載出來
      - name: docker
        path: /var/run/docker.sock # 掛載宿主機的docker
    settings:
      dockerfile: /app/build/generator/Dockerfile
    commands:
        - cd /app/build/generator
        - chmod +x run.sh
        - sh run.sh
        - docker ps

volumes: # 定義流水線掛載目錄,用于共享數(shù)據(jù)
  - name: maven-build
    host:
      path: /app/build/generator   #jar包目錄可以修改從宿主機中掛載的目錄
  - name: maven-cache
    host:
      path: /home/Gettler/docker/maven/cache
  - name: docker
    host:
      path: /var/run/docker.sock

Dockerfile

#指定基礎(chǔ)鏡像(一般指定程序所依賴的環(huán)境)
#本例子是構(gòu)建SpringBoot所以我指定的jdk環(huán)境變量
FROM openjdk:8

#將./hello-world.jar添加到容器的/opt目錄中
COPY ./*.jar /opt

#指定dockerfile的命令在哪個目錄下執(zhí)行
WORKDIR /opt

#指定容器和外界交互的端口
EXPOSE 80

#容器運行后執(zhí)行的命令(該命令在WORKDIR指定的工作目錄下執(zhí)行)
#注意:多個CMD指令只有最后一個會生效
CMD java -jar *.jar

#在構(gòu)建鏡像時執(zhí)行的命令
#我這邊用它來打印java的環(huán)境變量
RUN java -version

#添加該鏡像的元數(shù)據(jù)
LABEL version="1.0" description="代碼生成器服務(wù)" by="Gettler"

run.sh

#!/bin/sh
# 定義應(yīng)用組名
group_name='power'
# 定義應(yīng)用名稱
app_name='generator'
# 定義應(yīng)用版本
app_version='latest'
echo '----copy jar----'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker rmi ${group_name}/${app_name}:${app_version}
echo '----rm image----'
# 打包編譯docker鏡像
docker build -t ${group_name}/${app_name}:${app_version} .
echo '----build image----'
docker run -p 4001:80 --name ${app_name} \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-d ${group_name}/${app_name}:${app_version}
echo '----start container----'

然后新建gitea倉庫,將其push到遠程倉庫后,然后以Gitea用戶(管理員身份)進入Drone服務(wù) http://123.45.54.123:3991/,點擊continue即可關(guān)聯(lián)到gitea服務(wù)授權(quán)登錄。

登錄后點擊右上角SYNC按鈕同步倉庫,看到剛剛新建的倉庫后點進去,激活,然后點擊Setting頁面,勾選trust

Docker 配置 Gitea + Drone 搭建 CI/CD 平臺,實戰(zhàn),Linux,docker,gitea,ci/cd

勾選trust后,每次代碼push都可以自動進行版本發(fā)布

也可以手動發(fā)布,點擊右上角new build按鈕,選擇代碼分支,即可進行部署。

點擊對應(yīng)build可以查看日志,出現(xiàn)綠色對勾后即為發(fā)布成功

Docker 配置 Gitea + Drone 搭建 CI/CD 平臺,實戰(zhàn),Linux,docker,gitea,ci/cd

再附上一手前端項目配置

Vue 項目配置

.drone.yml

kind: pipeline # 定義一個管道
type: docker # 當(dāng)前管道的類型
name: test # 當(dāng)前管道的名稱

steps: # 定義管道的執(zhí)行步驟
  - name: deploy # 步驟名稱
    image: node:18 # 當(dāng)前步驟使用的鏡像,我是node18,也可以修改其他鏡像
    settings:
      mirror: # Docker鏡像加速地址
    depends_on: [clone] # 依賴的步驟
    volumes: # 掛載數(shù)據(jù)卷(此為容器內(nèi)的目錄)
      - name: node_modules # 數(shù)據(jù)卷名稱
        path: /drone/src/node_modules # 容器內(nèi)目錄 絕對路徑
      - name: deploy_path
        path: /app/build/front
    commands: # 當(dāng)前步驟執(zhí)行的命令
      - pwd # 查看當(dāng)前目錄
      - npm config set registry https://registry.npm.taobao.org # 切換淘寶鏡像
      - yarn # 安裝node_modules包(我的項目用yarn,看項目也可使用其他命令)
      - yarn build # 執(zhí)行編譯(我的項目用yarn,看項目也可使用其他命令)
      - cp -r ./dist/* /app/build/front/html/
      - cp Dockerfile /app/build/front
      - cp default.conf /app/build/front
      - cp run.sh /app/build/front
  - name: build # 流水線名稱
    image: plugins/docker
    depends_on: [deploy]
    volumes: # 將容器內(nèi)目錄掛載到宿主機,倉庫需要開啟Trusted設(shè)置
      - name: deploy_path
        path: /app/build/front # 將應(yīng)用打包好的Jar和執(zhí)行腳本掛載出來
      - name: docker
        path: /var/run/docker.sock # 掛載宿主機的docker
    settings:
      mirror: # Docker鏡像加速地址
      dockerfile: /app/build/front/Dockerfile
    commands:
        - cd /app/build/front
        - chmod +x run.sh
        - sh run.sh
        - docker ps

volumes: # 聲明數(shù)據(jù)卷(此為服務(wù)器中的實際目錄)
  - name: node_modules # 數(shù)據(jù)卷名稱
    host:
      path: /home/Gettler/docker/node_modules
  - name: deploy_path
    host: 
      path: /app/build/front
  - name: docker
    host:
      path: /var/run/docker.sock

記得修改Docker鏡像加速地址!

Dockerfile

# 設(shè)置基礎(chǔ)鏡像
FROM nginx:latest

# 將dist文件中的內(nèi)容復(fù)制到 /usr/share/nginx/html/ 這個目錄下面
COPY html /usr/share/nginx/html
# 用本地的 default.conf 配置來替換nginx鏡像里的默認配置
COPY default.conf /etc/nginx/conf.d/default.conf

EXPOSE 80

LABEL version="1.0" description="前端服務(wù)" by="Gettler"

run.sh

#!/bin/sh
# 定義應(yīng)用組名
group_name='power'
# 定義應(yīng)用名稱
app_name='front'
# 定義應(yīng)用版本
app_version='latest'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker rmi ${group_name}/${app_name}:${app_version}
echo '----rm image----'
# 打包編譯docker鏡像
docker build -t ${group_name}/${app_name}:${app_version} .
echo '----build image----'
docker run -p 3995:80 --name ${app_name} \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-d ${group_name}/${app_name}:${app_version}
echo '----start container----'

Docker 配置 Gitea + Drone 搭建 CI/CD 平臺,實戰(zhàn),Linux,docker,gitea,ci/cd

若要修改 docker-compose.yml 文件,修改后再次輸入 docker compose up -d 即可重新加載有變化的容器,過程中會刪除之前的容器。而 docker compose up -d --no-create 命令可以在存在yaml文件中描述的容器的情況下啟動容器,不會重建容器。文章來源地址http://www.zghlxwxcb.cn/news/detail-817734.html

到了這里,關(guān)于Docker 配置 Gitea + Drone 搭建 CI/CD 平臺的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • [Docker實現(xiàn)測試部署CI/CD----相關(guān)服務(wù)器的安裝配置(1)]

    [Docker實現(xiàn)測試部署CI/CD----相關(guān)服務(wù)器的安裝配置(1)]

    CI,Continuous Integration,持續(xù)集成。即將持續(xù)不斷更新的代碼經(jīng)構(gòu)建、測試后也持續(xù)不斷的集成到項目主干分支。 CD,包含兩層含義:Continuous Delivery,持續(xù)交付,和 Continuous Deployment,持續(xù) 部署。 持續(xù)交付:是持續(xù)集成的后續(xù)步驟,持續(xù)頻繁地將軟件的新版本交付到類生產(chǎn)環(huán)境

    2024年02月14日
    瀏覽(22)
  • [Docker實現(xiàn)測試部署CI/CD----相關(guān)服務(wù)器的安裝配置(2)]

    [Docker實現(xiàn)測試部署CI/CD----相關(guān)服務(wù)器的安裝配置(2)]

    ????????Jenkins 是一個開源軟件項目,是基于 Java 開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個開放易用的軟件平臺,使軟件項目可以進行持續(xù)集成。 下載Linux版本的jdk,解壓到/usr/local目錄 進入 /etc/profile 目錄,設(shè)置環(huán)境變量 刷新配置文件,輸入

    2024年02月14日
    瀏覽(54)
  • CI/CD流水線實戰(zhàn)

    CI/CD流水線實戰(zhàn)

    不知道為什么,現(xiàn)在什么技術(shù)都想學(xué),因為我覺得我遇到了技術(shù)的壁壘,大的項目接觸不到,做的項目一個字 辣* 。所以,整個人心浮氣躁,我已經(jīng)得通過每天的騎行和長跑緩解這種浮躁了。一個周末,我再次宅在了家里,學(xué)習(xí)了一下 CICD 。 先分享一下 shigen 的學(xué)習(xí)視頻資源

    2024年02月12日
    瀏覽(46)
  • CI/CD—Docker初入門學(xué)習(xí)

    CI/CD—Docker初入門學(xué)習(xí)

    Docker 是基于 Go 語言的開源應(yīng)用容器虛擬化技術(shù)。Docker的主要目標是build、ship and run any app,anywhere,即通過對應(yīng)用組件的封裝、分發(fā)、部署、運行等生命周期的管理,達到應(yīng)用組件級別的一次封裝、到處運行(來源于官網(wǎng))。這里的應(yīng)用組件,即可以是一個Web應(yīng)用,也可以是

    2024年02月14日
    瀏覽(69)
  • docker 鏡像制作 與 CI/CD

    docker 鏡像制作 與 CI/CD

    目錄 鏡像到底是什么? 使用docker創(chuàng)建鏡像 步驟: 1、編輯Dockerfile(Dockerfile是docker制作鏡像的配方文件) 2、編輯requirements.txt文件 ?3、編輯app.py文件,我們的程序文件 4、生成鏡像文件 5、查看生成的鏡像 6、下載啟動redis鏡像 7、使用生成的鏡像生成容器? 8、????查看實

    2024年02月11日
    瀏覽(23)
  • CI/CD—Docker中深入學(xué)習(xí)

    CI/CD—Docker中深入學(xué)習(xí)

    什么是容器數(shù)據(jù)卷: 將應(yīng)用和環(huán)境打包成一個鏡像! 數(shù)據(jù)?如果數(shù)據(jù)都在容器中,那么我們?nèi)萜鲃h除,數(shù)據(jù)就會丟失!需求:數(shù)據(jù)可以持久 化。MySQL容器刪除了,刪容器跑路!需求:MySQL數(shù)據(jù)可以存儲在本地 容器之間可以有一個數(shù)據(jù)共享的技術(shù)!Docker 容器中產(chǎn)生的數(shù)據(jù),同

    2024年02月14日
    瀏覽(19)
  • 14. Docker中實現(xiàn)CI和CD

    14. Docker中實現(xiàn)CI和CD

    目錄 1、前言 2、什么是CI/CD 3、部署Jenkins 3.1、下載Jenkins 3.2、啟動Jenkins 3.3、訪問Jenkins頁面 4、Jenkins部署一個應(yīng)用 5、Jenkins實現(xiàn)Docker應(yīng)用的持續(xù)集成和部署 5.1、創(chuàng)建Dockerfile 5.2、集成Jenkins和Docker 6、小結(jié) 持續(xù)集成(CI/CD)是一種軟件開發(fā)的經(jīng)驗總結(jié)。它用于幫助開發(fā)團隊和交付

    2024年02月11日
    瀏覽(21)
  • [Docker實現(xiàn)測試部署CI/CD----自由風(fēng)格的CI操作[最終架構(gòu)](5)]

    [Docker實現(xiàn)測試部署CI/CD----自由風(fēng)格的CI操作[最終架構(gòu)](5)]

    ????????前面的架構(gòu)存在的問題是, 若有多個目標服務(wù)器都需要使用該鏡像,那么每個目標服務(wù) 器都需要在本地構(gòu)建鏡像,形成系統(tǒng)資源浪費。 若能夠在 Jenkins 中將 鏡像構(gòu)建好并推送到 Harbor 鏡像中心 ,那么無論有多少目標服務(wù)器需要該鏡像,都只需要從 Harbor 拉取即可

    2024年02月14日
    瀏覽(38)
  • 【CI/CD】基于 Jenkins+Docker+Git 的簡單 CI 流程實踐(上)

    【CI/CD】基于 Jenkins+Docker+Git 的簡單 CI 流程實踐(上)

    在如今的互聯(lián)網(wǎng)時代,隨著軟件開發(fā)復(fù)雜度的不斷提高,軟件開發(fā)和發(fā)布管理也越來越重要。目前已經(jīng)形成一套標準的流程,最重要的組成部分就是 持續(xù)集成 及 持續(xù)交付、部署 。在此,我們在京東云上以一個案例簡單實踐下 CI 流程。 1.1 CI/CD 持續(xù)集成 (Continuous Integration,

    2024年02月13日
    瀏覽(31)
  • 【持續(xù)集成CI/持續(xù)部署CD】六、Docker Compose構(gòu)建CI全流程

    【持續(xù)集成CI/持續(xù)部署CD】六、Docker Compose構(gòu)建CI全流程

    1. 創(chuàng)建宿主機掛載目錄并賦權(quán) 2. 新建 Jenkins+Sonar 安裝腳本 jenkins-compose.yml 腳本,這里的 Jenkins 使用的是 Docker 官方推薦的鏡像 jenkinsci/blueocean,在實際使用中發(fā)現(xiàn),即使不修改插件下載地址,也可以下載插件,所以比較推薦這個鏡像。 3. 在 jenkins-compose.yml 文件所在目錄下執(zhí)行

    2024年02月10日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包