需求

项目通过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
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐