腾讯云轻量应用服务器使用docker搭建轻量devops

在这里插入图片描述

手上闲置了一台腾讯云轻量应用服务器,最近打算用docker部署一套轻量化的devops流程,用于测试自己的个人项目。

腾讯云双十一轻量应用服务器特惠:https://curl.qcloud.com/W9pLemIl

##安装环境
###安装 Docker CE
查看环境

cat /etc/redhat-release
// CentOS Linux release 7.6.1810 (Core)

安装所需软件包

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

设置稳定的存储库

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

启动 docker

// 启动 docker 服务
sudo systemctl start docker
or
sudo systemctl start docker.service

// 设置docker 自启动
sudo systemctl enable docker.service

// 关闭 docker 服务
sudo systemctl stop docker.service

// 查看 docker 服务状态
sudo systemctl status docker.service

###docker 常用指令

-i:容器的标准输入保持打开
-t:让docker分配一个伪终端并绑定到容器的标准输入上
-p : 端口映射 格式为[主机端口:容器端口]
-d : 后台模式运行
-name : 给容器的起一个名字
-v:挂载主机的目录

#删除指定名称镜像
docker rmi hello-world

#删除所有镜像
docker rmi -f $(docker images)

创建docker网络

// 不指定网络驱动时默认创建的bridge网络
docker network create default_network

// 查看网络内部信息
docker network inspect default_network

// 列所有列表的网络
docker network  ls

// 移除指定的网络
docker network rm default_network

###安装 MongoDB
从 docker hub 下载 mongodb 官方镜像

docker pull mongo

创建 mongodb 容器

docker run --name  my-mongo  -p 27017:27017  -d mongo --auth
// 如果加需要验证就加--auth,不需要验证,就去掉。默认mongodb是不使用用户认证

查看 mongo 的容器 id

docker ps -a

进入容器设置用户

// 逐行执行
docker exec -it 容器id /bin/bash
mongo
use admin
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})   
exit

创建成功,后续操作都需要用户认证

Successfully added user: {
  "user" : "root",
  "roles" : [
    {
      "role" : "root",
      "db" : "admin"
    }
  ]
}

测试 mongo

mongo  宿主机ip/admin  -utest -p

指定 mongodb 配置文件

docker run --name some-mongo -d mongo --configsvr

###安装 NodeJS
启动 docker 服务

systemctl start docker

拉取 node 镜像

docker pull node

确认下 node 是否拉取成功

docker images

启动镜像

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 版本号

node -v
// v18.17.1

安装 pm2

npm i pm2 -g
// + pm2@5.3.0

###安装 Nginx
拉取官方镜像

docker pull nginx

nginx 常用指令

// 启动 nginx 容器
docker run -d --name nginx nginx
// 查看 nginx 实例进程
docker top nginx
// 进入 nginx 容器
docker exec -it nginx bash
// 杀死 nginx 容器实例
docker kill -s KILL
// 重启 nginx 容器实例
docker restart nginx
// 移除 nginx 容器实例
docker rm -f -v 容器id

基于 docker run -d --name nginx nginx 方法启动 nginx 后,docker 容器并没有对外暴露访问 nginx 的端口,即无法通过当前主机外部浏览器器访问 nginx。使用如下命令来指定 docker 容器中 nginx 实例对外开放的端口。

docker run --name nginx -d -p 80:80 nginx

安装Git

yum install git

验证

git --version
git version 1.8.3.1

##配置
###升级脚本
首先在项目根目录创建rebuild.sh文件,映射容器目录,指定node版本、源和命令。在项目创建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将代码拉至服务器。

git pull xxx

###docker-compose
创建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
创建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;
        }
}
}    

##执行
只需要一行代码即可执行部署。

./rebuild-h5.sh

执行成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
腾讯云轻量应用服务器(也称为Lighthouse)是一种快速部署、低成本的基础计算服务,它可以支持Kubernetes (k8s) 集群的部署。以下是通过腾讯云轻量应用服务器部署k8s的一般步骤: 1. **环境准备**:首先,确保你已经在腾讯云上创建了一个VPC网络,并配置了安全组允许Kubernetes所需的通信。 2. **选择平台**:腾讯云提供了多种方式部署k8s,如通过控制台的“一站式”服务、TKE Kubernetes服务,或者使用自助管理的CCE (Cloud Container Engine)。 3. **安装工具**:下载并配置kubectl命令行工具,这是与k8s集群交互的主要工具。 4. **创建节点**:在Lighthouse服务器上,安装必要的容器运行时(比如Docker),然后将其加入到k8s集群作为工作节点。可以使用云厂商提供的脚本自动化这个过程。 5. **初始化集群**:使用`kubectl apply -f k8s.yaml` 或者腾讯云提供的初始化脚本来部署k8s的主控组件(etcd、apiserver、controller-manager和scheduler)。 6. **验证集群**:确认所有组件已成功启动并通过`kubectl get nodes`检查节点状态,同时检查是否可以正常创建和服务部署。 7. **安全性和网络策略**:设置访问控制策略,包括防火墙规则,保护集群免受恶意攻击,同时配置内部服务之间的连接。 8. **持续集成/部署**:如果需要,可以设置CI/CD流程,将应用程序源码与k8s的自动部署关联起来。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值