最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker?gitea?drone實(shí)現(xiàn)超輕量級(jí)CI?CD實(shí)戰(zhàn)詳解

 更新時(shí)間:2022年10月12日 14:11:29   作者:leizhenkuo  
這篇文章主要為大家介紹了docker?gitea?drone實(shí)現(xiàn)超輕量級(jí)CI?CD實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

環(huán)境安裝

需要如下環(huán)境

docker + docker-compose

drone + drone-runner gitea

安裝docker-ce及docker-compose

卸載舊版本docker,較舊版本的Docker被稱為docker或docker-engine。如果已安裝這些,請(qǐng)卸載它們以及相關(guān)的依賴項(xiàng)。

sudo yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

1、安裝所需的包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2、使用以下命令設(shè)置穩(wěn)定存儲(chǔ)庫。

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

3、安裝最新版本的Docker CE和containerd

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

4、常用命令

systemctl start docker # 開啟docker
systemctl stop docker # 關(guān)閉docker
systemctl status docker # 檢查docker
systemctl enable docker # 設(shè)置開機(jī)自啟動(dòng)

docker 鏡像加速

對(duì)于使用systemctl的系統(tǒng),請(qǐng)?jiān)?etc/docker/daemon.json中寫入如下內(nèi)容

{"registry-mirrors":["https://registry.docker-cn.com"]}

之后重啟服務(wù):

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

安裝docker-compose

1、在官方文檔對(duì)比docker版本下載合適的docker-compose包

https://docs.docker.com/compose/install/

https://github.com/docker/compose/releases

2、下載安裝包

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

將1.24.1換成你要安裝的版本,我安裝的是1.25.1,也可以選擇自己喜歡的版本

3、對(duì)二進(jìn)制文件應(yīng)用可執(zhí)行權(quán)限

sudo chmod +x /usr/local/bin/docker-compose

4、測試安裝

docker-compose --version  #成功時(shí)回顯示版本號(hào)。 
docker-compose version 1.25.1, build a82fef07

安裝gitea

創(chuàng)建目錄 /home/docker/gitea,創(chuàng)建文件 docker-compose.yml 內(nèi)容如下

version: "3"
networks:
  gitea:
    external: false
services:
  server:
    image: gitea/gitea:latest # 直接裝最新版就好了,沒啥好選的,隨意
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - ./data:/data  # /home/data可以替換成你想要的掛載目錄
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000" # 可以替換成你想要的端口
      - "8222:22" # 8222可以替換成22

docker-compose操作方式

docker-compose up -d 后臺(tái)啟動(dòng) Gitea
docker-compose down
docker-compose logs
docker-compose ps 將顯示 Gitea 是否正確啟動(dòng)

訪問 Gitea

訪問:http://server-ip:3000 會(huì)進(jìn)入初始化安裝界面,按實(shí)際情況配置即可,端口號(hào)不用變,URL換成宿主機(jī)地址或者域名

修改完后,點(diǎn)擊“立即安裝”,完成初始化

安裝drone+drone-runner

創(chuàng)建目錄 /home/docker/drone,創(chuàng)建文件 docker-compose.yml 內(nèi)容如下

version: '3'
services:
  drone-server:
    restart: always
    image: drone/drone:2
    ports:
      - "9999:80"
    volumes:
      - ./:/var/lib/drone/
      - ./data:/data/
    environment:
      - DRONE_GITEA_SERVER=http://xxxxxxxxx:3000/ # Gitea訪問地址
      - DRONE_GITEA_CLIENT_ID=xxxxxxxxx # 應(yīng)用ID,下一步會(huì)獲取
      - DRONE_GITEA_CLIENT_SECRET=xxxxxxxxx # 應(yīng)用密鑰,下一步會(huì)獲取
      - DRONE_SERVER_HOST=xxxxxxxxx:9999
      - DRONE_SERVER_PROTO=http # 支持http, https
      - DRONE_RPC_SECRET=xxxxxxxxx # 通信密鑰,下一步會(huì)獲取
      - DRONE_GIT_ALWAYS_AUTH=true
      - DRONE_GIT_USERNAME=xxxxxxxxx # git用戶名
      - DRONE_GIT_PASSWORD=xxxxxxxxx # git密碼
      - DRONE_USER_CREATE=username:xxxxxxxxx,admin:true # 管理員用戶名,開啟管理員賬戶
  drone-runner-docker:
    restart: always
    image: drone/drone-runner-docker:1
    ports:
      - "10000:3000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_RPC_PROTO=http # 支持http, https
      - DRONE_RPC_HOST=drone-server
      - DRONE_RPC_SECRET=xxxxxxxxx # 通信密鑰,下一步會(huì)獲取
      - DRONE_RUNNER_NAME=drone-runner-docker
      - DRONE_RUNNER_CAPACITY=2

創(chuàng)建文件好后,先不啟動(dòng),去Gitea配置獲取應(yīng)用ID和密鑰

配置應(yīng)用

進(jìn)入Gitea,點(diǎn)擊頭像-設(shè)置-應(yīng)用

1、創(chuàng)建應(yīng)用

應(yīng)用名稱 drone

重定向 URI http://xxxxxxxxxx:9999/login 就是drone入口地址

創(chuàng)建好后,會(huì)獲取ClientID和ClientSecret

2、生成新的令牌

令牌名稱 drone

創(chuàng)建好后,會(huì)獲取令牌

3、修改剛剛 /home/docker/drone下的 docker-compose.yml

應(yīng)用ID、應(yīng)用密鑰 修改為剛剛獲取的 ClientID和ClientSecret

通信密鑰 修改為剛剛獲取的 令牌

4、啟動(dòng)

進(jìn)入 /home/docker/drone 執(zhí)行 docker-compose up -d

實(shí)戰(zhàn)

這是一個(gè)springboot的例子

在項(xiàng)目pom.xml同級(jí)目錄下添加如下文件

Dockerfile

#指定基礎(chǔ)鏡像(一般指定程序所依賴的環(huán)境)
#本例子是構(gòu)建SpringBoot所以我指定的jdk環(huán)境變量
FROM openjdk:8
#添加維護(hù)者信息
MAINTAINER author:leizk
MAINTAINER mail:appler1998@qq.com
#將./hello-world.jar添加到容器的/opt目錄中
COPY ./game.jar /opt
#指定dockerfile的命令在哪個(gè)目錄下執(zhí)行
WORKDIR /opt
#指定容器和外界交互的端口
EXPOSE 8080
#容器運(yùn)行后執(zhí)行的命令(該命令在WORKDIR指定的工作目錄下執(zhí)行)
#注意:多個(gè)CMD指令只有最后一個(gè)會(huì)生效
CMD java -jar game.jar
#在構(gòu)建鏡像時(shí)執(zhí)行的命令
#我這邊用它來打印java的環(huán)境變量
RUN java -version
#添加該鏡像的元數(shù)據(jù)
LABEL version="1.0" description="這是一個(gè)Web服務(wù)器" by="edc"

.drone.yml

kind: pipeline
type: docker
name: game
steps:
    - name: build-jar # 流水線名稱
      image: maven:3.8.5-openjdk-8 # 定義創(chuàng)建容器的Docker鏡像
      volumes: # 將容器內(nèi)目錄掛載到宿主機(jī),倉庫需要開啟Trusted設(shè)置
      - name: maven-cache
        path: /root/.m2 # 將maven下載依賴的目錄掛載出來,防止重復(fù)下載
      - name: maven-build
        path: /app/build # 將應(yīng)用打包好的Jar和執(zhí)行腳本掛載出來
      commands: # 定義在Docker容器中執(zhí)行的shell命令
      - mvn clean package -DskipTests=true # 應(yīng)用打包命
      - cp target/game.jar /app/build/game.jar
      - cp Dockerfile /app/build/
      - cp run.sh /app/build/
    - name: build-docker # 流水線名稱
      image: plugins/docker
      volumes: # 將容器內(nèi)目錄掛載到宿主機(jī),倉庫需要開啟Trusted設(shè)置
      - name: maven-build
        path: /app/build # 將應(yīng)用打包好的Jar和執(zhí)行腳本掛載出來
      - name: docker
        path: /var/run/docker.sock # 掛載宿主機(jī)的docker
      settings:
        dockerfile: /app/build/Dockerfile
      commands: # 定義在Docker容器中執(zhí)行的shell命令
        - cd /app/build
        - chmod +x run.sh
        - sh run.sh
        - docker ps
volumes: # 定義流水線掛載目錄,用于共享數(shù)據(jù)
  - name: maven-build
    host:
      path: /home/docker/drone/maven/build # 從宿主機(jī)中掛載的目錄
  - name: maven-cache
    host:
      path: /home/docker/drone/maven/cache
  - name: docker
    host:
      path: /var/run/docker.sock

run.sh

#!/bin/sh
# 定義應(yīng)用組名
group_name='nnzmr'
# 定義應(yīng)用名稱
app_name='game'
# 定義應(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 8080:8080 --name ${app_name} \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-d ${group_name}/${app_name}:${app_version}
echo '----start container----'

這是一個(gè)vue項(xiàng)目的例子

.drone.yml

這里有個(gè)小bug,我想把npm install的依賴保存下來,下次用,但是好像沒有成功,我再弄弄看

kind: pipeline
type: docker
name: search
steps:
  - name: prepare # 流水線名稱
    image: node:14-alpine # 定義創(chuàng)建容器的Docker鏡像
    volumes: # 將容器內(nèi)目錄掛載到宿主機(jī),倉庫需要開啟Trusted設(shè)置
      - name: node-model
        path: /app/model # 將maven下載依賴的目錄掛載出來,防止重復(fù)下載
      - name: node-cache
        path: /app/cache # 將maven下載依賴的目錄掛載出來,防止重復(fù)下載
      - name: node-build
        path: /app/build # 將應(yīng)用打包好的Jar和執(zhí)行腳本掛載出來
    commands: # 定義在Docker容器中執(zhí)行的shell命令
      - npm config set prefix "/app/model"
        npm config set cache "/app/cache"
      - npm config set registry https://registry.npm.taobao.org
      - npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass
      - npm install
      - npm run build
      - cp -r dist /app/build/
      - cp Dockerfile /app/build/
      - cp default.conf /app/build/
      - cp run.sh /app/build/
  - name: build # 流水線名稱
    image: plugins/docker
    volumes: # 將容器內(nèi)目錄掛載到宿主機(jī),倉庫需要開啟Trusted設(shè)置
      - name: node-build
        path: /app/build # 將應(yīng)用打包好的Jar和執(zhí)行腳本掛載出來
      - name: docker
        path: /var/run/docker.sock # 掛載宿主機(jī)的docker
    settings:
      dockerfile: /app/build/Dockerfile
    commands: # 定義在Docker容器中執(zhí)行的shell命令
      - cd /app/build
      - chmod +x run.sh
      - sh run.sh
      - docker ps
volumes: # 定義流水線掛載目錄,用于共享數(shù)據(jù)
  - name: node-build
    host:
      path: /home/docker/drone/node/build # 從宿主機(jī)中掛載的目錄
  - name: node-model
    host:
      path: /home/docker/drone/node/model
  - name: node-cache
    host:
      path: /home/docker/drone/node/cache
  - name: docker
    host:
      path: /var/run/docker.sock

Dockerfile

# 設(shè)置基礎(chǔ)鏡像
FROM nginx
#設(shè)置CTS時(shí)區(qū)
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# 將dist文件中的內(nèi)容復(fù)制到 /usr/share/nginx/html/ 這個(gè)目錄下面
COPY ./dist /usr/share/nginx/html/
#用本地的 default.conf 配置來替換nginx鏡像里的默認(rèn)配置
COPY default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

run.sh

#!/bin/sh
# 定義應(yīng)用組名
group_name='nnzmr'
# 定義應(yīng)用名稱
app_name='search'
# 定義應(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 8081:80 --name ${app_name} \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-d ${group_name}/${app_name}:${app_version}
echo '----start container----'

default.conf

server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
    error_log  /var/log/nginx/error.log  error;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

成果展示

貼幾張?jiān)谟玫膱D片

在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述

構(gòu)建流程根據(jù)你定義的pipline執(zhí)行

在這里插入圖片描述

可以結(jié)合portainer來管理你的容器

在這里插入圖片描述

以上就是docker gitea drone實(shí)現(xiàn)超輕量級(jí)CI CD實(shí)戰(zhàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于docker gitea drone輕量級(jí)CI CD的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker格式化輸出命令:"docker?inspect?--format"?學(xué)習(xí)記錄

    Docker格式化輸出命令:"docker?inspect?--format"?學(xué)習(xí)記錄

    Docker?--format?參數(shù)提供了基于?Go模板?的日志格式化輸出輔助功能,并提供了一些內(nèi)置的增強(qiáng)函數(shù),這篇文章主要介紹了Docker格式化輸出命令:"docker?inspect?--format"?學(xué)習(xí)筆記,需要的朋友可以參考下
    2023-01-01
  • 解決Mac下 docker 無法 ping 通宿主機(jī)的問題

    解決Mac下 docker 無法 ping 通宿主機(jī)的問題

    這篇文章主要介紹了解決Mac下 docker 無法 ping 通宿主機(jī)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker安裝Nacos單機(jī)的實(shí)現(xiàn)方式(配合寶塔)

    Docker安裝Nacos單機(jī)的實(shí)現(xiàn)方式(配合寶塔)

    這篇文章主要介紹了Docker安裝Nacos單機(jī)的實(shí)現(xiàn)方式(配合寶塔),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • docker搭建redis主從哨兵集群的實(shí)現(xiàn)步驟

    docker搭建redis主從哨兵集群的實(shí)現(xiàn)步驟

    本文主要介紹了docker搭建redis主從哨兵集群的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • ubuntu20.04 LTS安裝docker的方法步驟

    ubuntu20.04 LTS安裝docker的方法步驟

    這篇文章主要介紹了ubuntu20.04 LTS安裝docker的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • docker?run命令的使用小結(jié)

    docker?run命令的使用小結(jié)

    本文主要介紹了docker?run命令的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼

    docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼

    本隨著互聯(lián)網(wǎng)應(yīng)用規(guī)模不斷擴(kuò)大,原有的單一服務(wù)器已經(jīng)無法滿足高并發(fā)和高可用性的要求,本文就來介紹docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼,感興趣的可以了解一下
    2023-12-12
  • docker導(dǎo)入導(dǎo)出鏡像、容器,及啟動(dòng)容器失敗的解決過程

    docker導(dǎo)入導(dǎo)出鏡像、容器,及啟動(dòng)容器失敗的解決過程

    本文介紹了在內(nèi)網(wǎng)環(huán)境下使用Docker進(jìn)行應(yīng)用程序部署時(shí)遇到的問題以及解決方案,主要通過Docker的鏡像和容器導(dǎo)入導(dǎo)出功能,實(shí)現(xiàn)了在內(nèi)網(wǎng)環(huán)境下成功部署應(yīng)用程序,同時(shí),還詳細(xì)介紹了docker命令的使用方法,包括鏡像的導(dǎo)出和導(dǎo)入、容器的導(dǎo)出和導(dǎo)入等
    2025-02-02
  • docker實(shí)現(xiàn)重新打tag并刪除原tag的鏡像

    docker實(shí)現(xiàn)重新打tag并刪除原tag的鏡像

    這篇文章主要介紹了docker實(shí)現(xiàn)重新打tag并刪除原tag的鏡像,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 在docker中開啟sshd操作

    在docker中開啟sshd操作

    這篇文章主要介紹了在docker中開啟sshd操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評(píng)論

银川市| 普定县| 隆子县| 乾安县| 舟曲县| 天祝| 阳原县| 霍林郭勒市| 五大连池市| 普兰店市| 应用必备| 佛冈县| 灌阳县| 绥滨县| 阿合奇县| 苏尼特左旗| 若羌县| 壶关县| 兴海县| 咸阳市| 五指山市| 临高县| 岱山县| 和龙市| 富民县| 资源县| 阿克苏市| 资中县| 汝州市| 绥德县| 鹤壁市| 拉萨市| 潢川县| 昭觉县| 托克逊县| 迁西县| 宁波市| 京山县| 苍溪县| 泽普县| 佳木斯市|