Skip to content

build images

build images #7

Workflow file for this run

# workflow 名称
name: build nginx images
# 触发方式
on:
# github action 手动触发
workflow_dispatch:
jobs:
# nginx镜像构建
build:
runs-on: ubuntu-latest
steps:
# 检出 master 分支代码
- name: checkout master
uses: actions/checkout@master
# 指定 node 环境
- name: config node
uses: actions/setup-node@v4
with:
node-version: '19.3.0'
# docker nginx 镜像构建
- name: build nginx
run: docker build -t promonkeyli_nginx:latest .
# 登录阿里云 镜像服务
- name: login aliyun
run: echo ${{secrets.DOCKER_PASSWORD}} | docker login --username=${{ secrets.DOCKER_USERNAME }} ${{secrets.DOCKER_REGISTRY}} --password-stdin
# 打版本 tag
- name: docker tag
run: docker tag promonkeyli_nginx ${{secrets.DOCKER_REGISTRY}}/promonkeyli/frontend:latest
# 镜像推送
- name: push images
run: docker push ${{secrets.DOCKER_REGISTRY}}/promonkeyli/frontend:latest
# 执行完毕
- name: complete build
run: echo build completed !
# nginx镜像部署
deploy:
runs-on: ubuntu-latest
needs: [build]
steps:
# 登陆云服务器拉取打包好的镜像
- name: ssh login
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
password: ${{ secrets.SSH_PASSWORD }}
port: ${{ secrets.SSH_PORT }}
script: |
echo -e "---------登录镜像容器服务--------"
# 登录阿里云镜像容器服务
echo ${{secrets.DOCKER_PASSWORD}} | sudo docker login --username=${{ secrets.DOCKER_USERNAME }} ${{secrets.DOCKER_REGISTRY}} --password-stdin
echo -e "---------停掉镜像--------"
# 停掉容器
sudo docker stop frontend
echo -e "---------删除本地容器和镜像--------"
# 删除本地容器
sudo docker rm frontend
# 删除本地镜像
sudo docker rmi ${{secrets.DOCKER_REGISTRY}}/frontend:latest
echo -e "---------拉取镜像--------"
# 拉取镜像
sudo docker pull ${{secrets.DOCKER_REGISTRY}}/promonkeyli/frontend:latest
echo -e "---------创建容器并运行容器--------"
# -rm: docker会在容器退出时删除与它关联的数据卷
# -d: 后台运行容器,并返回容器ID
# -p: 端口映射,本机端口:容器端口
# --name: 指定容器名称
# 最后一个为镜像名称
sudo docker run --rm -d -p 80:80 --name frontend -v /data/nginx/html:/usr/share/nginx/html ${{secrets.DOCKER_REGISTRY}}/promonkeyli/frontend:latest
echo -e "---------执行完毕--------"