Github Action是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。
Docker 和 Github 自动将 node.js 部署
我们在项目目录创建 .gitignore
输入
/node_modules
这样我们提交就不带上包了。
服务器
我使用的是 Centos 安装docker 文档
我使用的是 FinalShell 我觉得用着还行,只要你不更新。
安装好之后 ---------
我们在项目根目录创建一个名为 dockerfile 的文件,注意创建之后有一个小鱼图标。
FROM node:16 版本
WORKDIR /app 目录
COPY package*.json ./ 复制package 到 ./ 目录
RUN npm install
COPY . .
ENV PORT=8088
EXPOSE 8080
CMD ["node","."] 在 docker 确定 mcd命令
然后我们创建 .dockerignore
/node_modules
这个跟 .gitignore 作用相同。
安装 Docker Desktop
安装好之后,可能要看你们电脑的环境,我的问题是让我 wsl 升级,如果你有科学上网还好,可以在微软商店下载安装。
Docker Desktop
运行按钮,我们把 HOST PORT 改成8080,然后就可以浏览器 localhost:8080 访问了
好的,确认 docker 文件正在工作。
注册 docker
进去之后选择个人免费的,邮箱校验。
然后我们在项目根目录创建文件夹,还有 .yml 文件
我们到 Github actions
复制YAML文件,到创建的YML文件里面。。
docker push 你的master节点。
docker注册账号和容器名称
然后 git 操作。我创建的项目目录问题很大,我每次都是一个文件夹里面两个文件夹,一个react,一个 node,这样不行要都在根目录里,push之后。
这时候我们上 github Action 一看,会构建错误,因为 docker 登陆失败,到项目设置。
new secrets 一个文件,分别定义 DOCKER_USERNAME,DOCKER_PASSWORD,内容为你注册 docker hub的账号密码。
然后回到 Actions ,重新运行。
成功了,我们在 docker hub官网就可以看到我们的镜像存储库了。
shell
docker run -t -d -p 80:8080 --name linode-docker username/容器名:master
docker命令 docker rm -f $(docker ps -aq) 删除所有容器
可能你们输入的时候会提示端口的问题,我一不小心 kill 把我nginx进程杀死了
docker ps (可以看容器是否运行成功)
然后输入你的 ip 就可以在浏览器上看到拉 =-=
创建 bash 自动更新容器
ls 确定不要重复的脚本名称
nano update.sh
#! /bin/bash
docker stop linode-docker
docker rmi username/容器名:master
docker pull username/容器名:master
docker run -t -d -p 80:8-8- --name linode-docker username/容器名:master
chmod +x update.sh
./update.sh
添加ssh 脚本到我们的yml
update_ssh_linode:
name: Telling Linode Server to Update
runs-on: ubuntu-latest
steps:
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} 在github secrets 添加 你的服务器用户
password: ${{ secrets.PASSWORD } 在github secrets 添加你的 密码}
port: ${{ secrets.PORT }} 在 github secrets 添加 HOST 和 ip
script:bash update.sh
secrets 这些都要到 github 先配置了
复制到 yml 文件里面,记得顶行 对准 push_to_registry
git 之后,就到github actions 看看成功了没。
最后的测试,看看我们的努力成功了没有
是的我成功了。
感谢
Sebastian Kargl
托管网络虚拟网络器 Hostinger Affiliate-Programm 值得你的信赖