

























2026-04-16 13:51 xiashengwang 阅读(23) 评论() 收藏 举报
在本地 PowerShell 中执行:
ssh -i C:\Users\wangzheng\.ssh\id_rsa -p 6666 root@104.225.100.100
如果成功登录,说明密钥配置正确。输入 exit 退出。
登录 GitHub
点击右上角 + → New repository
Repository name:flask-ci-demo
选择 Private(私有)
不要勾选 “Initialize this repository with a README”
点击 Create repository
创建后,复制仓库地址(如 https://github.com/你的用户名/flask-ci-demo.git)。
创建项目目录
mkdir D:\flask-ci-demo
cd D:\flask-ci-demo
创建 app.py
import os
from flask import Flask
app = Flask(__name__)
greeting = os.environ.get('GREETING', 'Hello')
@app.route('/')
def hello():
return f'{greeting} from Docker and CI!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
创建 requirements.txt
flask==2.3.3
创建 Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]
验证文件已创建:
dir
应该看到 app.py、requirements.txt、Dockerfile。
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/你的用户名/flask-ci-demo.git
git push -u origin main
(将 你的用户名 替换为你的 GitHub 用户名)
刷新 GitHub 仓库页面,应该能看到代码。
登录 Docker Hub
点击右上角头像 → Account Settings → Security
点击 New Access Token
输入描述(如 github-actions),权限选择 Read & Write
点击 Generate,复制生成的令牌(形如 dckr_pat_...)
打开你的 GitHub 仓库页面 → Settings → Secrets and variables → Actions
点击 New repository secret,依次添加以下 5 个 Secrets:
| 名称 | 说明 |
|---|---|
| DOCKERHUB_USERNAME | 你的 Docker Hub 用户名 |
| DOCKERHUB_TOKEN | 上一步复制的 Access Token |
| SERVER_HOST | 104.225.100.100(只写 IP,不要端口) |
| SERVER_USER | root(或你的登录用户名) |
如何获取 SERVER_SSH_KEY 的值?
在本地 PowerShell 中执行:
Get-Content C:\Users\wangzheng\.ssh\id_rsa | Set-Clipboard
然后粘贴到 Secret 的 value 框中。确保内容包括:
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----

在项目目录 D:\flask-ci-demo 下创建文件夹 .github\workflows:
mkdir .github\workflows
然后创建文件 .github\workflows\deploy.yml,内容如下(注意端口已改为 6666):
name: Deploy Flask App to Server
on:
push:
branches: [ "main" ]
workflow_dispatch:
jobs:
build-and-push:
name: Build and Push Docker Image
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/flask-ci-demo:latest
deploy:
name: Deploy to Server
runs-on: ubuntu-latest
needs: build-and-push
steps:
- name: Deploy via SSH
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
port: 6666
script: |
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/flask-ci-demo:latest
docker stop flask-app || true
docker rm flask-app || true
docker run -d --name flask-app -p 5000:5000 ${{ secrets.DOCKERHUB_USERNAME }}/flask-ci-demo:latest
保存文件。
git add .github/workflows/deploy.yml
git commit -m "Add CI/CD pipeline with SSH port 6666"
git push origin main
推送后,进入 GitHub 仓库的 Actions 标签页,你会看到一个名为 Deploy Flask App to Server 的工作流正在运行。
等待 Actions 执行完成(两个任务都变成绿色勾号)。

打开浏览器,访问 http://104.225.100.100(注意:服务器上需要开放 80 端口,并且容器映射了 80 端口)。
如果看到 Hello from Docker and CI!,说明部署成功。

修改本地 app.py 中的返回字符串,例如:
return f'{greeting} from Docker and CI! (auto deployed)'
然后提交推送:
git add app.py
git commit -m "Update message"
git push origin main
再次观察 Actions,会自动触发新的构建和部署。完成后刷新浏览器,内容应已更新。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。