Github 自动部署(docker)
github action 自动化部署(docker)
上一篇博客pm2方式自动部署方式类型 一个利用pm2方式 本文利用docker方式
配置文件
name: github-action-demo # 工作流名称
on:
push:
branches:
- develop # 生效分支
jobs:
first-github-job: # 任务名称 自定义
runs-on: ubuntu-latest # 运行环境
steps:
- name: Checkout
uses: actions/checkout@v3 #复用的 action 会把仓库代码检出到 runner 中。
# 压缩项目
- name: Build project
run: zip -vr my-artifact ./**
# 读取package.json的值
- name: Read Version
id: version
uses: ashley-taylor/read-json-property-action@v1.0
with:
path: ./package.json
property: version
# 发布 Release
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
with:
tag_name: v${{steps.version.outputs.value}}
release_name: v${{steps.version.outputs.value}}
draft: false
prerelease: false
# 上传构建结果到 Release
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./my-artifact.zip
asset_name: my-artifact.zip
asset_content_type: application/zip
# 把文件上传到服务器
- name: Upload to Deploy Server
uses: easingthemes/ssh-deploy@main
env:
# SSH_PRIVATE_KEY为准备工作步骤三中生成密钥对里的私钥
SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_TOKEN }}
# 指定当前目录中要上传的内容
SOURCE: "./**"
# 指定上传到部署机器的哪个目录下
TARGET: "/apps/koa-koa"
# 上传前指令,此处用于清空TARGET下的文件
ARGS: "-avzr --delete"
# REMOTE_HOST为机器的公网IP
REMOTE_HOST: ${{ secrets.HOST }}
# REMOTE_USER 为登录机器时用到账号名
REMOTE_USER: ${{secrets.USERNAME}}
# 排除上传的文件 用,隔开
EXCLUDE: my-artifact.zip
SCRIPT_AFTER: |
docker stop my-koa # 停止容器
docker rm my-koa # 销毁容器
docker pull yydsyyll/auto-deploy-koa:0.0.1 # 拉取容器
docker images # 查看镜像列表
docker run -d --name my-koa -p 5000:5000 -v /apps/koa-koa:/apps/koa-koa auto-deploy-koa:0.0.1
变量解释
docker run -d --name my-koa -p 5000:5000 -v /apps/koa-koa:/apps/koa-koa auto-deploy-koa:0.0.1
docker run 命令 从镜像生成容器
-d:后台启动
-p:容器的 5000 端口映射到本机的 5000 端口
--name:指定容器名称
-v:目录挂载(一旦容器销毁了 数据也都没了 保存容器的数据到宿主机上)
即使再小的帆也能远航

浙公网安备 33010602011771号