build images #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 "---------执行完毕--------" |