使用 Docker 部署 Python Flask 应用

一、Docker 安装

1.下载windows安装包

2.在 Docker Desktop 设置中启用了“Use the WSL 2 based engine”选项

3.docker --version,看到 Docker 的版本信息,表示安装成功

二、启用Kubernetes

1.打开 Docker Desktop,点击设置(齿轮图标)。

2.在左侧菜单中选择 Kubernetes,然后勾选 “Enable Kubernetes”。

3.点击 “Apply & Restart” 以启动 Kubernetes

4.设置registry-mirrors

"registry-mirrors": [

"https://docker.mirrors.ustc.edu.cn"
]

或者开启vpn

 5.执行kubectl get nodes

三、安装 kubectl 命令行工具

1.curl -LO "https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe"

2.将下载的 kubectl.exe 文件移动到某个位置。例如,可以将其放在 D:\kubectl\ 目录下

3.设置环境变量

4.验证安装

kubectl version --client

四、搭建项目框架

1.

# app.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5002)

 

# Dockerfile
# 使用官方的 Python 镜像作为基础镜像
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件并安装
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 5002

# 运行应用
CMD ["python", "app.py"]

 

# requirements.txt
Flask==3.0.3

2.构建 Docker 镜像 

 D:\Git_Files\study\temp_program\docker-k8s-flask-demo> docker build -t docker-k8s-flask-demo .

3.推送 Docker 镜像到镜像仓库(例如 Docker Hub)

①需要先登录

docker login

然后输入账号密码即可

docker tag docker-k8s-flask-demo:latest liwang1206docker/magicdocker:latest
docker push liwang1206docker/magicdocker:latest

此时docker run -d -p 8009:5002 liwang1206docker/magicdocker:latest

访问localhost:8009能正常访问应用站点

 

 

以下未验证!!!

 

创建 Kubernetes 部署文件k8s/deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flask-app-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: flask-app
  template:
    metadata:
      labels:
        app: flask-app
    spec:
      containers:
      - name: flask-app
        image: liwang1206docker/magicdocker:latest
        ports:
        - containerPort: 5002

创建 Kubernetes 服务文件k8s/service.yaml

apiVersion: v1
kind: Service
metadata:
  name: flask-app-service
spec:
  selector:
    app: flask-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5002
  type: LoadBalancer

4.部署到 Kubernetes

docker-k8s-flask-demo目录下运行以下命令:

kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml

5.检查部署状态

kubectl get pods
kubectl get services

  

  

 

 

 

posted @ 2024-09-02 09:59  峡谷风  阅读(395)  评论(0)    收藏  举报