简介
整个流程比较清晰,实现的是基于Github 定向的往ECS做发布
探索
自动化打包发布一般流程:
- 本地环境打镜像
- CI/CD 环境打镜像
以上的流程使用于比较大的项目,受限于环境,打算对上面流程做简化,使用github action做触发
环境部署
一些准备
由于需要直接通过SSH 远程连接,需要准备一对公钥/密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这将生成两个文件:id_rsa(私钥)和id_rsa.pub(公钥)
云服务器配置
安装Docker
首先,更新 YUM 软件包索引并安装一些必要的依赖项:
sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加 Docker 官方 GPG 密钥:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker Engine:
sudo yum install docker-ce docker-ce-cli containerd.io
启动 Docker 服务:
sudo systemctl start docker
(可选)设置 Docker 开机自启动:
sudo systemctl enable docker
现在,Docker 已经安装并且运行在 CentOS 上了。你可以使用 docker version 命令来验证安装是否成功。
创建部署用户和设置 SSH 认证
在服务器上创建一个专用的部署用户,根据需要设置用户的密码和其他选项。
sudo adduser deploy-user
切换到部署用户,并创建 .ssh 目录,然后将您的公钥(id_rsa.pub)添加到该用户的 authorized_keys 文件中:
sudo su - deploy-user
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
vi ~/.ssh/authorized_keys
重启 SSH 服务
sudo systemctl restart sshd
GitHub配置
- 基于下面流程,新加两个参数
- 新建Action事件,在push时触发事件
name: Build and Deploy Docker Imageon:push:branches:- mainjobs:build-and-deploy:runs-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkout@v2- name: Deploy to server and build Docker imageenv:SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}run: |mkdir -p ~/.sshecho "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsachmod 600 ~/.ssh/id_rsassh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa deploy-user@${{ secrets.IP }} "cd /path/to//project && docker build -t your-image-name:latest ."
这里会几个难点代处理:
- 没法使用Checkout code通过GitHub上的代码直接到云端构建image,暂时的想法 还是在github构建完之后上传到云端
- 云端新建用户的权限不足
- node 代码没有跑起来,是什么原因?
补充一些命令行
进入到docker image 中
docker run -it bot0 /bin/sh
正在运行的容器的 ID 或名称
docker ps
停止并删除容器
docker stop <container_id_or_name>
docker rm <container_id_or_name>
查找被停掉的容器
docker ps -a
删除相应的镜像
docker images
docker rmi <image_id_or_name>
删除所有未使用的镜像
docker image prune