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
更多推荐
已为社区贡献1条内容
所有评论(0)