RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于阿里云Docker和Jenkins構(gòu)建自動化部署

馬哥Linux運(yùn)維 ? 來源:稀土掘金技術(shù)社區(qū) ? 2023-12-11 15:29 ? 次閱讀

在這里先亮一下所涉及的環(huán)境設(shè)備 阿里云服務(wù)器:

CPU&內(nèi)存:2核(vCPU)2 GiB

操作系統(tǒng):CentOS 8.5 64位

第一步安裝docker

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

安裝命令:


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

當(dāng)出現(xiàn)如下命令:

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

說明已經(jīng)安裝成功了

第二步安裝docker-compose

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


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

但卻得到如下結(jié)果:

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

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

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

無權(quán)限問題

有效的方法就是這兩種:

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

輸入如下命令:


 sudo usermod -aG docker $USER


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

然后結(jié)果如下:

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

報(bào)出了一個新的問題

安裝失敗或缺失

報(bào)錯:


/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://hljzzgx.com/tags/ai/" target="_blank"><u>ai</u></a>lable

解決方法:

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

命令如下:


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

以下這部分內(nèi)容是挪用《Docker + Jenkins + Nginx實(shí)現(xiàn)前端自動化部署》來的

創(chuàng)建docker的相關(guān)目錄,方便維護(hù)


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

創(chuàng)建docker-compose.yml、nginx.conf配置文件


cd /docker/compose
touch docker-compose.yml


cd /docker/nginx/conf
touch nginx.conf

最終目錄結(jié)構(gòu)如下:


   + docker 
       + compose
           - docker-compose.yml  //docker-compose配置
       + html             //各環(huán)境代碼目錄(實(shí)際項(xiàng)目可能不在同一目錄)
           + dev          //dev環(huán)境代碼目錄
           + release      //release環(huán)境代碼目錄
           + pro          //pro環(huán)境代碼目錄
       + 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環(huán)境
    server {
            #監(jiān)聽的端口
        listen  8001;
        server_name  localhost;
        #設(shè)置日志
#        access_log  logs/dev.access.log  main;
        
        #定位到index.html
           location / {
               #linux下HTML文件夾,就是你的前端項(xiàng)目文件夾
               root  /usr/share/nginx/html/dev/dist;
#               root  /home/html/dev/dist;
               #輸入網(wǎng)址(server_name:port)后,默認(rèn)的訪問頁面
               index  index.html;
               try_files $uri $uri/ /index.html;
           }
    }


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


 
#    include /etc/nginx/conf.d


   
}

重點(diǎn):進(jìn)入服務(wù)器控制臺安全組配置添加三個都端口。8080:對應(yīng)jenkins 8001:對應(yīng)dev環(huán)境 8002:對應(yīng)sit環(huán)境

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是一個定義的服務(wù)名稱。user: root指定了 Jenkins 容器使用 root 權(quán)限。restart: always表示容器總是在退出時重啟。image: jenkins/jenkins:lts指定了 Jenkins 鏡像及其版本。container_name: jenkins是容器的名稱。ports定義了容器內(nèi)外端口的映射。volumes定義了主機(jī)文件系統(tǒng)路徑與容器內(nèi)路徑的掛載關(guān)系。image: nginx指定了 Nginx 鏡像。container_name: nginx_dev是容器的名稱。

docker如何移除jenkins

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

首先,使用docker ps -a命令查看所有正在運(yùn)行的或已經(jīng)停止的容器。確認(rèn)Jenkins容器的ID或名稱。

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

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

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

注意事項(xiàng):

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

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

第四步啟動環(huán)境

先啟動docker, 如果已經(jīng)設(shè)置自動啟動,可忽略


systemctl start docker

然后啟動Jenkins、Nginx,這一步要在docker-compose.yml當(dāng)前目錄下,執(zhí)行該命令,不然會報(bào)找不到

docker-compose up -d

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

查看運(yùn)行狀態(tài)


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

因?yàn)槲恼缕?,所以Jenkins的配置和使用放到第二篇。歡迎關(guān)注

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

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

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

docker run: 創(chuàng)建并運(yùn)行新的容器。

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

docker exec: 進(jìn)入到正在運(yùn)行中的容器內(nèi)部執(zhí)行命令。

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

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

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

docker pull: 從互聯(lián)網(wǎng)上拉取最新版本的鏡像。

docker push: 將自定義的鏡像推送到互聯(lián)網(wǎng)上共享。

docker build: 根據(jù) Dockerfile 構(gòu)建新的鏡像。

進(jìn)入服務(wù)器檢查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

設(shè)置docker開機(jī)啟動


sudo systemctl enable docker  
sudo systemctl start docker

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10854

    瀏覽量

    211574
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9123

    瀏覽量

    85322
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6801

    瀏覽量

    123283
  • 阿里云
    +關(guān)注

    關(guān)注

    3

    文章

    952

    瀏覽量

    43006
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    457

    瀏覽量

    11846

原文標(biāo)題:云部署:阿里云Docker+Jenkins構(gòu)建自動化部署

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    阿里 ESS 彈性伸縮服務(wù)新功能來襲,更全面、更自動化的使用體驗(yàn)

    ,自動調(diào)整其彈性計(jì)算資源的管理服務(wù)。2017年9月阿里彈性伸縮服務(wù)伸縮配置新增了實(shí)例自定義數(shù)據(jù)、秘鑰對、實(shí)例RAM角色、標(biāo)簽新特性;近日,阿里
    發(fā)表于 01-23 15:49

    阿里ECS Docker安裝流程

    阿里ECS安裝Docker
    發(fā)表于 11-04 09:19

    如何搭建DotNet Core 21自動化構(gòu)建部署環(huán)境

    邊緣搭建DotNet Core 21 自動化構(gòu)建部署環(huán)境(上)
    發(fā)表于 04-23 14:53

    如何在持續(xù)集成開發(fā)流程中使用JenkinsDocker?

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

    Jenkins管理的持續(xù)集成境引入Docker來優(yōu)化資源配置

    Jenkins是被廣泛應(yīng)用的持續(xù)集成、自動化測試、持續(xù)部署的框架,甚至有些項(xiàng)目組順便將其用來做流程管理的工具。根據(jù)任務(wù)的多寡,Jenkins通常有兩種典型的
    發(fā)表于 09-26 11:42 ?0次下載
    在<b class='flag-5'>Jenkins</b>管理的持續(xù)集成境引入<b class='flag-5'>Docker</b>來優(yōu)化資源配置

    jenkins自動化部署

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

    Jenkins詳細(xì)安裝與構(gòu)建部署使用教程

    本文詳細(xì)介紹了Jenkins安裝與構(gòu)建部署使用教程。Jenkins是一個開源軟件項(xiàng)目,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能。Jenkins是基于Java開發(fā)的一種持
    發(fā)表于 02-06 13:47 ?1758次閱讀
    <b class='flag-5'>Jenkins</b>詳細(xì)安裝與<b class='flag-5'>構(gòu)建部署</b>使用教程

    平臺的自動化部署設(shè)計(jì)與實(shí)現(xiàn)

    基于簡化部署操作、節(jié)省部署時間、提高部署效率的目的,對平臺架構(gòu)和網(wǎng)絡(luò)拓?fù)溥M(jìn)行設(shè)計(jì),對平臺自動化
    發(fā)表于 02-23 10:07 ?0次下載
    <b class='flag-5'>云</b>平臺的<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>設(shè)計(jì)與實(shí)現(xiàn)

    Jenkins+docker+springboot一鍵自動部署項(xiàng)目

    本文章實(shí)現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項(xiàng)目,步驟齊全,少走坑路。
    的頭像 發(fā)表于 09-14 09:30 ?1592次閱讀

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

    簡述實(shí)現(xiàn)步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實(shí)現(xiàn)項(xiàng)目自動拉取打包并運(yùn)行。
    的頭像 發(fā)表于 11-23 10:16 ?1377次閱讀

    Jenkins+Docker一鍵自動化部署SpringBoot項(xiàng)目

    本文章實(shí)現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項(xiàng)目,步驟齊全,少走坑路。
    的頭像 發(fā)表于 12-14 10:04 ?916次閱讀

    Jenkins+Docker實(shí)現(xiàn)一鍵自動化部署項(xiàng)目!

    本文章實(shí)現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項(xiàng)目,步驟齊全,少走坑路。
    的頭像 發(fā)表于 01-06 15:36 ?1257次閱讀

    關(guān)于Jenkins+docker+springboot一鍵自動部署項(xiàng)目

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

    Jenkins+Docker一鍵自動化部署SpringBoot應(yīng)用最精簡流程

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

    基于Jenkins+GitLab+Maven實(shí)現(xiàn)代碼自動打包編譯發(fā)布

    Jenkins是一個獨(dú)立開源的持續(xù)集成和持續(xù)交付工具,用于自動化構(gòu)建、測試和部署軟件項(xiàng)目。
    的頭像 發(fā)表于 11-20 09:57 ?4879次閱讀
    基于<b class='flag-5'>Jenkins</b>+GitLab+Maven實(shí)現(xiàn)代碼<b class='flag-5'>自動</b>打包編譯發(fā)布
    RM新时代网站-首页