docker搭建devops(騰訊云輕量應(yīng)用服務(wù)器)教程
安裝環(huán)境
安裝 Docker CE
手上閑置了一臺(tái)騰訊云輕量應(yīng)用服務(wù)器,最近打算用docker部署一套輕量化的devops流程,用于測(cè)試自己的個(gè)人項(xiàng)目。
查看環(huán)境
cat /etc/redhat-release // CentOS Linux release 7.6.1810 (Core)
安裝所需軟件包
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
設(shè)置穩(wěn)定的存儲(chǔ)庫(kù)
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
安裝 docker CE
sudo yum install docker-ce docker-ce-cli containerd.io
啟動(dòng) docker
// 啟動(dòng) docker 服務(wù) sudo systemctl start docker or sudo systemctl start docker.service // 設(shè)置docker 自啟動(dòng) sudo systemctl enable docker.service // 關(guān)閉 docker 服務(wù) sudo systemctl stop docker.service // 查看 docker 服務(wù)狀態(tài) sudo systemctl status docker.service
docker 常用指令
-i:容器的標(biāo)準(zhǔn)輸入保持打開(kāi) -t:讓docker分配一個(gè)偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上 -p : 端口映射 格式為[主機(jī)端口:容器端口] -d : 后臺(tái)模式運(yùn)行 -name : 給容器的起一個(gè)名字 -v:掛載主機(jī)的目錄 #刪除指定名稱鏡像 docker rmi hello-world #刪除所有鏡像 docker rmi -f $(docker images)
創(chuàng)建docker網(wǎng)絡(luò)
// 不指定網(wǎng)絡(luò)驅(qū)動(dòng)時(shí)默認(rèn)創(chuàng)建的bridge網(wǎng)絡(luò) docker network create default_network // 查看網(wǎng)絡(luò)內(nèi)部信息 docker network inspect default_network // 列所有列表的網(wǎng)絡(luò) docker network ls // 移除指定的網(wǎng)絡(luò) docker network rm default_network
安裝 MongoDB
從 docker hub 下載 mongodb 官方鏡像
docker pull mongo
創(chuàng)建 mongodb 容器
docker run --name my-mongo -p 27017:27017 -d mongo --auth // 如果加需要驗(yàn)證就加--auth,不需要驗(yàn)證,就去掉。默認(rèn)mongodb是不使用用戶認(rèn)證
查看 mongo 的容器 id
docker ps -a
進(jìn)入容器設(shè)置用戶
// 逐行執(zhí)行 docker exec -it 容器id /bin/bash mongo use admin db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]}) exit
創(chuàng)建成功,后續(xù)操作都需要用戶認(rèn)證
Successfully added user: { "user" : "root", "roles" : [ { "role" : "root", "db" : "admin" } ] }
測(cè)試 mongo
mongo 宿主機(jī)ip/admin -utest -p
指定 mongodb 配置文件
docker run --name some-mongo -d mongo --configsvr
安裝 NodeJS
啟動(dòng) docker 服務(wù)
systemctl start docker
拉取 node 鏡像
docker pull node
確認(rèn)下 node 是否拉取成功
docker images
啟動(dòng)鏡像
docker run -i -t node /bin/bash
安裝node
//將 docker 的 3000 端口映射到 tcp 的 3000 并分配給 node docker run --name node-app -idt -p 3000:3000 node /bin/bash //映射本地目錄到 docker docker run -it -p 3000:3000 -v /home/unishop:/home/unishop --privileged=true node /bin/bash docker run -it -d -p 3000:3000 -p 3001:3001 -v /home/code:/home/code --privileged=true --name node node /bin/bash docker run --name node --network main-net -it -d -p 3000:4000 -v /home/node:/home/node --privileged=true node /bin/bash
查看 node 版本號(hào)
node -v // v18.17.1
安裝 pm2
npm i pm2 -g // + pm2@5.3.0
安裝 Nginx
拉取官方鏡像
docker pull nginx
nginx 常用指令
// 啟動(dòng) nginx 容器 docker run -d --name nginx nginx // 查看 nginx 實(shí)例進(jìn)程 docker top nginx // 進(jìn)入 nginx 容器 docker exec -it nginx bash // 殺死 nginx 容器實(shí)例 docker kill -s KILL // 重啟 nginx 容器實(shí)例 docker restart nginx // 移除 nginx 容器實(shí)例 docker rm -f -v 容器id
基于 docker run -d --name nginx nginx 方法啟動(dòng) nginx 后,docker 容器并沒(méi)有對(duì)外暴露訪問(wèn) nginx 的端口,即無(wú)法通過(guò)當(dāng)前主機(jī)外部瀏覽器器訪問(wèn) nginx。使用如下命令來(lái)指定 docker 容器中 nginx 實(shí)例對(duì)外開(kāi)放的端口。
docker run --name nginx -d -p 80:80 nginx
安裝Git
yum install git
驗(yàn)證
git --version git version 1.8.3.1
配置
升級(jí)腳本
首先在項(xiàng)目根目錄創(chuàng)建rebuild.sh文件,映射容器目錄,指定node版本、源和命令。
在項(xiàng)目創(chuàng)建devops目錄。
docker run --rm -v /likemusic/likemusic_h5:/likemusic_h5 -w /likemusic_h5 node:16.13.0 npm --registry https://registry.npm.taobao.org install docker run --rm -v /likemusic/likemusic_h5:/likemusic_h5 -w /likemusic_h5 node:16.13.0 npm run build cd /likemusic/likemusic/devops docker-compose restart
更新代碼
使用git將代碼拉至服務(wù)器。
git pull xxx
docker-compose
創(chuàng)建docker-compose目錄配置文件。
version: '2' services: web: image: openjdk restart: always ports: - 8080:8080 container_name: likemusic-h5 volumes: - ../:/likemusic working_dir: /likemusic command: java --add-opens java.base/java.lang=ALL-UNNAMED -jar ./ruoyi-admin/target/ruoyi-admin.jar environment: TZ: Asia/Shanghai browser: image: nginx restart: always ports: - 80:80 - 443:443 container_name: likemusic-nginx volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./certs:/etc/nginx/certs - /likemusic/likemusic/ruoyi-ui/dist:/usr/share/nginx/html/likemusic/ - /likemusic/likemusic_h5/dist:/usr/share/nginx/html/likemusic_pc/ - /likemusic/like_music_mini_web/dist:/usr/share/nginx/html/like_music_mini_web/ - /likemusic/likemusic/wechat-file/TMOTc54Vrs.txt:/usr/share/nginx/html/wechat-file/TMOTc54Vrs.txt
nginx
創(chuàng)建nginx配置文件。
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; client_max_body_size 100m; gzip_static on; gzip_proxied any; server { listen 80; location / { alias /usr/share/nginx/html/likemusic_pc/; try_files $uri $uri/ /likemusic_pc/index.html /index.html; index index.html index.htm; autoindex on; } location /likemusic-manager { alias /usr/share/nginx/html/likemusic/; try_files $uri $uri/ /likemusic/index.html /index.html; index index.html index.htm; autoindex on; } location /like_music_mini_web { alias /usr/share/nginx/html/like_music_mini_web/; try_files $uri $uri/ /like_music_mini_web/index.html /index.html; index index.html index.htm; autoindex on; } location /likemusic-prod-api/ { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass https://tingdong.cn:8080/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location /TMOTc54Vrs.txt { alias /usr/share/nginx/html/wechat-file/TMOTc54Vrs.txt; try_files $uri $uri/ /index.html; index index.html index.htm; autoindex on; } } server { server_name manager.tingdong.cn; listen 80; location / { alias /usr/share/nginx/html/likemusic/; try_files $uri $uri/ /likemusic/index.html /index.html; index index.html index.htm; autoindex on; } location /likemusic-prod-api/ { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://172.27.226.102:8080/; } location = /50x.html { root html; } } }
執(zhí)行
只需要一行代碼即可執(zhí)行部署。
./rebuild-h5.sh
執(zhí)行成功。
以上就是docker搭建devops(騰訊云輕量應(yīng)用服務(wù)器)教程的詳細(xì)內(nèi)容,更多關(guān)于docker搭建devops的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Docker中Dockerfile之容器中運(yùn)行MyEclipse搭建的JavaWeb項(xiàng)目
本篇文章主要介紹了Docker中Dockerfile之容器中運(yùn)行MyEclipse搭建的JavaWeb項(xiàng)目,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02解決docker容器與宿主機(jī)相差8小時(shí)的問(wèn)題
使用docker-compose部署時(shí),在輸出的日志以及相關(guān)事件校驗(yàn)及輸出時(shí),導(dǎo)致事件與現(xiàn)實(shí)相差8小時(shí)。糾結(jié)怎么回事呢?下面小編給大家分享下解決docker容器與宿主機(jī)相差8小時(shí)的問(wèn)題,一起看看吧2021-09-09Docker搭建prometheus(普羅米修斯)的方法步驟
phometheus:當(dāng)前一套非常流行的開(kāi)源監(jiān)控和報(bào)警系統(tǒng),本文主要介紹了Docker搭建prometheus(普羅米修斯)的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02docker沒(méi)有錯(cuò)誤日志,鏡像服務(wù)卻啟動(dòng)不成功的問(wèn)題以及排查方式
這篇文章主要介紹了docker沒(méi)有錯(cuò)誤日志,鏡像服務(wù)卻啟動(dòng)不成功的問(wèn)題以及排查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05