衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于阿里云Docker和Jenkins構建自動化部署

馬哥Linux運維 ? 來源:稀土掘金技術社區 ? 2023-12-11 15:29 ? 次閱讀

在這里先亮一下所涉及的環境設備 阿里云服務器:

CPU&內存:2核(vCPU)2 GiB

操作系統:CentOS 8.5 64位

第一步安裝docker

79535318-9763-11ee-8b88-92fbcf53809c.jpg

安裝命令:


curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

當出現如下命令:

79667628-9763-11ee-8b88-92fbcf53809c.jpg

說明已經安裝成功了

第二步安裝docker-compose

這一步比較折騰, 按照網上的方法,使用如下命令, 即可完成下載


curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

但卻得到如下結果:

79779fa2-9763-11ee-8b88-92fbcf53809c.jpg

下載失敗,并且提示:Permission denied

7989b6e2-9763-11ee-8b88-92fbcf53809c.jpg

無權限問題

有效的方法就是這兩種:

799db624-9763-11ee-8b88-92fbcf53809c.jpg

輸入如下命令:


 sudo usermod -aG docker $USER


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

然后結果如下:

79a97d7e-9763-11ee-8b88-92fbcf53809c.jpg

報出了一個新的問題

安裝失敗或缺失

報錯:


/usr/local/bin/docker-compose: line 1: html: No such file or directory
/usr/local/bin/docker-compose: line 2: syntax error near unexpected token `<'
'usr/local/bin/docker-compose: line 2: `503 Serv<a href="https://m.hqchip.com/app/1726" target="_blank"><u>ic</u></a>e Temporarily Unav<a href="http://www.zgszdi.cn/tags/ai/" target="_blank"><u>ai</u></a>lable

解決方法:

重新安裝docker-compose,國內的有些快捷方式有些是有問題的,可能短期內能夠使用,時間長了就會出現問題
盡量直接使用GitHub的,如果一次下載不成,多執行幾遍就可以

命令如下:


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

最終效果:安裝成功!

檢查命令:docker-compose -v

79c90130-9763-11ee-8b88-92fbcf53809c.jpg

第三步安裝Nginx和Jenkins

使用docker拉取nginx、jenkins鏡像


docker pull nginx 
docker pull jenkins/jenkins

拉取完之后,查看鏡像


docker images


79e06b40-9763-11ee-8b88-92fbcf53809c.jpg

以下這部分內容是挪用《Docker + Jenkins + Nginx實現前端自動化部署》來的

創建docker的相關目錄,方便維護


mkdir /docker           
mkdir /docker/compose    
mkdir /docker/jenkins_home   
mkdir /docker/nginx      
mkdir /docker/nginx/conf 
mkdir /docker/html       
mkdir /docker/html/dev   
mkdir /docker/html/release  
mkdir /docker/html/pro

創建docker-compose.yml、nginx.conf配置文件


cd /docker/compose
touch docker-compose.yml


cd /docker/nginx/conf
touch nginx.conf

最終目錄結構如下:


   + docker 
       + compose
           - docker-compose.yml  //docker-compose配置
       + html             //各環境代碼目錄(實際項目可能不在同一目錄)
           + dev          //dev環境代碼目錄
           + release      //release環境代碼目錄
           + pro          //pro環境代碼目錄
       + jenkins_home     //Jenkins工程目錄
       + nginx            //nginx工程目錄
           + conf
               - nginx.conf  //nginx配置

nginx.conf


user  nginx;
worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    gzip  on;


    #dev環境
    server {
            #監聽的端口
        listen  8001;
        server_name  localhost;
        #設置日志
#        access_log  logs/dev.access.log  main;
        
        #定位到index.html
           location / {
               #linux下HTML文件夾,就是你的前端項目文件夾
               root  /usr/share/nginx/html/dev/dist;
#               root  /home/html/dev/dist;
               #輸入網址(server_name:port)后,默認的訪問頁面
               index  index.html;
               try_files $uri $uri/ /index.html;
           }
    }


    #sit環境
    server {
            #監聽的端口
        listen  8002;
        server_name  localhost;
        #設置日志
#        access_log  logs/sit.access.log  main;
        
        #定位到index.html
           location / {
               #linux下HTML文件夾,就是你的前端項目文件夾
               root  /usr/share/nginx/html/sit/dist;
#               root  /home/html/dev/dist;
               #輸入網址(server_name:port)后,默認的訪問頁面
               index  index.html;
               try_files $uri $uri/ /index.html;
           }
    }


 
#    include /etc/nginx/conf.d


   
}

重點:進入服務器控制臺安全組配置添加三個都端口。8080:對應jenkins 8001:對應dev環境 8002:對應sit環境

docker-compose.yml


version: '3'


networks:
  frontend:
    external: true


services:                                      
  docker_jenkins:
    user: root                                 
    restart: always                            
    image: jenkins/jenkins:lts                 
    container_name: jenkins                    
    environment:
      - TZ=Asia/Shanghai
      - "JENKINS_OPTS=--prefix=/jenkins_home" 




    ports:                                     
      - 8080:8080
      - 50000:50000
      


    volumes:                                   
      - /docker/jenkins_home/:/var/jenkins_home     
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
  
  docker_nginx_dev:                            
    restart: always
    image: nginx
    container_name: nginx_dev
    ports:
      - 8001:8001
    volumes:
      - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /docker/html:/usr/share/nginx/html
      - /docker/nginx/logs:/var/log/nginx


  docker_nginx_sit:                            
    restart: always
    image: nginx
    container_name: nginx_sit
    ports:
      - 8002:8002
    volumes:
      - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /docker/html:/usr/share/nginx/html
      - /docker/nginx/logs:/var/log/nginx

配置說明:

docker_jenkins是一個定義的服務名稱。user: root指定了 Jenkins 容器使用 root 權限。restart: always表示容器總是在退出時重啟。image: jenkins/jenkins:lts指定了 Jenkins 鏡像及其版本。container_name: jenkins是容器的名稱。ports定義了容器內外端口的映射。volumes定義了主機文件系統路徑與容器內路徑的掛載關系。image: nginx指定了 Nginx 鏡像。container_name: nginx_dev是容器的名稱。

docker如何移除jenkins

要從Docker中刪除Jenkins容器,可以按照以下步驟進行操作:

首先,使用docker ps -a命令查看所有正在運行的或已經停止的容器。確認Jenkins容器的ID或名稱。

然后,使用docker stop (將替換為Jenkins容器的ID)來停止該容器。

接下來,使用docker rm (同樣需要將替換為Jenkins容器的ID)來刪除該容器。

最后,還可以通過docker images命令列出本地存儲庫中的所有圖像,并使用docker rmi (將替換為Jenkins鏡像的ID)來刪除相應的鏡像。

注意事項:

在執行上述命令之前,請確保沒有其他重要數據依賴于這些容器或鏡像。

若要完全清理Docker系統中不再使用的對象,可以使用docker system prune命令。

第四步啟動環境

先啟動docker, 如果已經設置自動啟動,可忽略


systemctl start docker

然后啟動Jenkins、Nginx,這一步要在docker-compose.yml當前目錄下,執行該命令,不然會報找不到

docker-compose up -d

79f67d22-9763-11ee-8b88-92fbcf53809c.jpg

查看運行狀態


docker-compose ps -a

[root@iZ7xvdmlqb3e0e0teakf5vZ ~]# cd /docker/compose [root@iZ7xvdmlqb3e0e0teakf5vZ compose]# docker-compose ps -a

7a0ad484-9763-11ee-8b88-92fbcf53809c.jpg

然后訪問地址,即可

7a1f6bec-9763-11ee-8b88-92fbcf53809c.jpg

因為文章篇幅太大,所以Jenkins的配置和使用放到第二篇。歡迎關注

查看Docker容器的命令,可以使用docker ps -a命令。這將顯示所有正在運行或已經停止的容器及其相關信息,包括容器ID、鏡像名稱、創建時間等。

如果需要獲取特定容器的詳細信息,可以使用docker inspect 命令來查看該容器的配置和狀態。

下面是一些常用的Docker容器管理命令示例:

docker run: 創建并運行新的容器。

docker start/stop/restart: 分別啟動、停止和重啟指定的容器。

docker exec: 進入到正在運行中的容器內部執行命令。

docker logs: 輸出容器的日志信息。

docker rm: 刪除不再需要的容器。

docker images: 列出本地主機上存在的鏡像。

docker pull: 從互聯網上拉取最新版本的鏡像。

docker push: 將自定義的鏡像推送到互聯網上共享。

docker build: 根據 Dockerfile 構建新的鏡像。

進入服務器檢查docker、docker-compose版本


[root@VM-12-6-centos ~]# docker -v
Docker version 20.10.5, build 55c4c88
[root@VM-12-6-centos ~]# docker-compose -v
docker-compose version 1.28.6, build 5db8d86f

設置docker開機啟動


sudo systemctl enable docker  
sudo systemctl start docker

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10904

    瀏覽量

    213027
  • 服務器
    +關注

    關注

    12

    文章

    9306

    瀏覽量

    86069
  • 操作系統
    +關注

    關注

    37

    文章

    6896

    瀏覽量

    123749
  • 阿里云
    +關注

    關注

    3

    文章

    974

    瀏覽量

    43230
  • Docker
    +關注

    關注

    0

    文章

    492

    瀏覽量

    11967

原文標題:云部署:阿里云Docker+Jenkins構建自動化部署

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    阿里ECS Docker安裝流程

    阿里ECS安裝Docker
    發表于 11-04 09:19

    如何搭建DotNet Core 21自動化構建部署環境

    邊緣搭建DotNet Core 21 自動化構建部署環境(上)
    發表于 04-23 14:53

    如何在持續集成開發流程中使用JenkinsDocker

    Jenkins自動化我們開發的測試流程。 在您開始之前,我們假設您對Arm上的嵌入式軟件開發有基本的了解。DockerJenkins和Arm Fast模型將在指南中進行解釋。 對P
    發表于 08-02 10:50

    jenkins自動化部署

    本文詳細介紹Jenkins的簡單使用—jenkins自動化部署
    的頭像 發表于 02-06 11:27 ?4740次閱讀
    <b class='flag-5'>jenkins</b><b class='flag-5'>自動化</b><b class='flag-5'>部署</b>

    平臺的自動化部署設計與實現

    基于簡化部署操作、節省部署時間、提高部署效率的目的,對平臺架構和網絡拓撲進行設計,對平臺自動化
    發表于 02-23 10:07 ?0次下載
    <b class='flag-5'>云</b>平臺的<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>設計與實現

    Jenkins+docker+springboot一鍵自動部署項目

    本文章實現最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發表于 09-14 09:30 ?1634次閱讀

    Jenkins+Docker一鍵自動化部署SpringBoot最簡流程

    簡述實現步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實現項目自動拉取打包并運行。
    的頭像 發表于 11-23 10:16 ?1425次閱讀

    Jenkins+Docker一鍵自動化部署SpringBoot項目

    本文章實現最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發表于 12-14 10:04 ?965次閱讀

    Jenkins+Docker實現一鍵自動化部署項目!

    本文章實現最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發表于 01-06 15:36 ?1300次閱讀

    關于Jenkins+docker+springboot一鍵自動部署項目

    本文章實現最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發表于 05-16 08:59 ?886次閱讀
    關于<b class='flag-5'>Jenkins+docker</b>+springboot一鍵<b class='flag-5'>自動</b><b class='flag-5'>部署</b>項目

    Jenkins+Docker一鍵自動化部署SpringBoot應用最精簡流程

    簡述實現步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實現項目自動拉取打包并運行。
    的頭像 發表于 11-06 16:27 ?2375次閱讀
    <b class='flag-5'>Jenkins+Docker</b>一鍵<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>SpringBoot應用最精簡流程

    基于Jenkins+GitLab+Maven實現代碼自動打包編譯發布

    Jenkins是一個獨立開源的持續集成和持續交付工具,用于自動化構建、測試和部署軟件項目。
    的頭像 發表于 11-20 09:57 ?5142次閱讀
    基于<b class='flag-5'>Jenkins</b>+GitLab+Maven實現代碼<b class='flag-5'>自動</b>打包編譯發布

    Flexus X 實例 Docker+Jenkins+gitee 實現 CICD 自動化部署 - 解放你的雙手~

    前言 828 B2B 企業節特惠來襲,Flexus X 實例引領自動化部署新紀元!Docker 攜手 Jenkins 與 Gitee,共創 CICD 無限可能!在快速迭代的數字時代,我
    的頭像 發表于 12-26 18:19 ?211次閱讀
    Flexus X 實例 <b class='flag-5'>Docker+Jenkins</b>+gitee 實現 CICD <b class='flag-5'>自動化</b><b class='flag-5'>部署</b> - 解放你的雙手~

    Jenkins 與 SonarQube 集成部署自動化代碼質量監控

    的性能表現,為 Jenkins 與 SonarQube 的集成部署提供強大支撐。在 Flexus X 的助力下,自動化代碼掃描與質量問題即時反饋成為可能,顯著提升團隊開發效率與軟件質量。立即體驗華為
    的頭像 發表于 01-07 17:24 ?275次閱讀
    <b class='flag-5'>Jenkins</b> 與 SonarQube 集成<b class='flag-5'>部署</b>,<b class='flag-5'>自動化</b>代碼質量監控

    基于 DockerJenkins 實現自動化部署

    優化,為 Docker 容器應用與 Jenkins 自動化流水線提供了理想的運行環境。無論是快速構建、測試還是
    的頭像 發表于 01-07 17:25 ?219次閱讀
    基于 <b class='flag-5'>Docker</b> 與 <b class='flag-5'>Jenkins</b> 實現<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>
    百家乐官网赌王有哪些| 虹乐棋牌是真的吗| 大发888娱乐场下载 zhidu| 乐透乐博彩论坛3d| 略阳县| 百家乐官网3带厂家地址| 新澳门百家乐官网娱乐城| 多伦多百家乐官网的玩法技巧和规则| 赌博百家乐赢不了| 金海岸百家乐的玩法技巧和规则| 玩百家乐的好处| 777博彩| 赌场百家乐官网欺诈方法| 八卦罗盘24山图| 百家乐下注法| bet9全讯网查询| 百家乐官网赌博分析网| 澳门百家乐官方网址| 太阳城线上娱乐城| 百家乐官网佣金计算| 百家乐官网博彩网太阳城娱乐城| 百家乐打劫法| 骰宝 | 百家乐官网凯时娱乐平台| 澳门百家乐是怎样赌| 晓游棋牌游戏大厅下载| 百家乐官网分路单析器| LV百家乐官网赢钱LV| 威尼斯人娱乐城赌百家乐| 百家乐官网接线玩法| 百家乐官网和的打法| 威尼斯人娱乐城活动lm0| 巴彦县| 玩百家乐官网都是什么人| 大发888bet亚洲| 百家乐官网博彩优惠论坛| 百家乐美食坊| 囊谦县| 玩百家乐如何看路| 六合彩香港| 巴厘岛百家乐官网的玩法技巧和规则|