在這里先亮一下所涉及的環境設備 阿里云服務器:
CPU&內存:2核(vCPU)2 GiB
操作系統:CentOS 8.5 64位
第一步安裝docker
安裝命令:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
當出現如下命令:
說明已經安裝成功了
第二步安裝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
但卻得到如下結果:
下載失敗,并且提示:Permission denied
無權限問題
有效的方法就是這兩種:
輸入如下命令:
sudo usermod -aG docker $USER chmod +x /usr/local/bin/docker-compose
然后結果如下:
報出了一個新的問題
安裝失敗或缺失
報錯:
/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 Service Temporarily Unavailable
解決方法:
重新安裝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
第三步安裝Nginx和Jenkins
使用docker拉取nginx、jenkins鏡像
docker pull nginx docker pull jenkins/jenkins
拉取完之后,查看鏡像
docker images
![79e06b40-9763-11ee-8b88-92fbcf53809c.jpg](https://file1.elecfans.com/web2/M00/B5/CA/wKgZomV2utqAPLqEAACGSNGxR_g174.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
接下來,使用docker rm
最后,還可以通過docker images命令列出本地存儲庫中的所有圖像,并使用docker rmi
注意事項:
在執行上述命令之前,請確保沒有其他重要數據依賴于這些容器或鏡像。
若要完全清理Docker系統中不再使用的對象,可以使用docker system prune命令。
第四步啟動環境
先啟動docker, 如果已經設置自動啟動,可忽略
systemctl start docker
然后啟動Jenkins、Nginx,這一步要在docker-compose.yml當前目錄下,執行該命令,不然會報找不到
docker-compose up -d
查看運行狀態
docker-compose ps -a
[root@iZ7xvdmlqb3e0e0teakf5vZ ~]# cd /docker/compose [root@iZ7xvdmlqb3e0e0teakf5vZ compose]# docker-compose ps -a
然后訪問地址,即可
因為文章篇幅太大,所以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
+關注
關注
68文章
10904瀏覽量
213027 -
服務器
+關注
關注
12文章
9306瀏覽量
86069 -
操作系統
+關注
關注
37文章
6896瀏覽量
123749 -
阿里云
+關注
關注
3文章
974瀏覽量
43230 -
Docker
+關注
關注
0文章
492瀏覽量
11967
原文標題:云部署:阿里云Docker+Jenkins構建自動化部署
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
如何在持續集成開發流程中使用Jenkins和Docker?
Jenkins+docker+springboot一鍵自動部署項目
Jenkins+Docker一鍵自動化部署SpringBoot最簡流程
Jenkins+Docker一鍵自動化部署SpringBoot項目
Jenkins+Docker實現一鍵自動化部署項目!
Jenkins+Docker一鍵自動化部署SpringBoot應用最精簡流程
![<b class='flag-5'>Jenkins+Docker</b>一鍵<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>SpringBoot應用最精簡流程](https://file1.elecfans.com/web2/M00/AC/B3/wKgaomVIo8WASUd0AAAXZrmT-0o083.png)
Flexus X 實例 Docker+Jenkins+gitee 實現 CICD 自動化部署 - 解放你的雙手~
![Flexus X 實例 <b class='flag-5'>Docker+Jenkins</b>+gitee 實現 CICD <b class='flag-5'>自動化</b><b class='flag-5'>部署</b> - 解放你的雙手~](https://file1.elecfans.com/web3/M00/03/F4/wKgZO2dtLVmAbhWoAAAeyH5wNJ4192.png)
Jenkins 與 SonarQube 集成部署,自動化代碼質量監控
![<b class='flag-5'>Jenkins</b> 與 SonarQube 集成<b class='flag-5'>部署</b>,<b class='flag-5'>自動化</b>代碼質量監控](https://file1.elecfans.com//web3/M00/05/21/wKgZPGd88t6AK9YwAAEA4xEY1H4138.png)
評論