Docker和github action实现自动化部署

需求

项目通过docker进行打包和部署,并和github action做关联

github action

name: sit_docker_deployment
#推送到主分支触发
on:
  push:
    branches: [main]
  workflow_dispatch:

jobs:
  DeploymentProject:
    runs-on: ubuntu-latest
    timeout-minutes: 14
    steps:
      - uses: actions/checkout@v3
#登录到dockerhub
      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_KEY }}

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
#创建镜像tag的hash值
      - name: Add SHORT_SHA env property with commit short sha
        run: |
          echo "SHORT_SHA=`git rev-parse --short HEAD`" >> $GITHUB_ENV
#构建并推送镜像
      - name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: .
          file: dockerfile.sit
          push: true
          tags: ${{ secrets.DOCKERHUB_USERNAME }}/project:${{env.SHORT_SHA}}

//在服务器上拉取镜像并运行
      - name: Exexute command
        uses: appleboy/ssh-action@master
        with:
          host: x.xxx.xxx.xx
          username: root
          key: ${{ secrets.SSHKEY }}
          port: 22
          script: |
            docker pull ${{ secrets.DOCKERHUB_USERNAME }}/project:${{env.SHORT_SHA}}
            docker stop ${{ secrets.SIT_OLD_HASH_VALUE}}
            docker run -dp 3000:3000 --name ${{env.SHORT_SHA}}  ${{ secrets.DOCKERHUB_USERNAME }}/project:${{env.SHORT_SHA}}
#在github上更新镜像tag名字,为了下一次action可以知道关闭的tag名字
      - name: Update patch version
        uses: hmanzur/actions-set-secret@v2.0.0
        with:
          name: "SIT_OLD_HASH_VALUE"
          value: ${{env.SHORT_SHA}}
          repository: Gocyber-world/gocyber-fe-pr
          #settings-Developer settings-Personal access tokens
          token: ${{ secrets.REPO_ACCESS_TOKEN }}

dockerfile

多层构建可以有效压缩镜像体积

FROM node:16-alpine AS Builder
RUN mkdir -p /code_run_docker
WORKDIR /code_run_docker
ADD . /code_run_docker
RUN yarn install
RUN yarn downloadLocales
RUN yarn build-sit

FROM node:16-alpine
WORKDIR /code_run_docker
COPY --from=Builder /code_run_docker .
CMD npm start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值