步骤1:准备一个 Flask 应用
首先,我们需要有一个正在运行的 Flask 应用。在本例中,我们假设您已经使用 flask 框架创建了一个名为 App.py
的 Python/ target=_blank class=infotextkey>Python Web 应用程序,同时有静态资源目录 static
和模板文件目录 templates
如下所示:
./
├── app.py
├── requirements.txt
├── static/
│ ├── css/
│ ├── img/
│ └── js/
└── templates/
├── login.html
├── logging.html
├── yunwei.html
├── 404.html
└── weixin.html
flask应用安装自己需求进行开发,基本框架如下:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello, World!'
if __name__ == '__mAIn__':
app.run()
当您启动该应用后,在命令窗口中应该看到类似以下的信息表示 Flask 应用服务已经成功启动:
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
请确保您的应用已正确运行后开始下面步骤。
在此步骤中,我们将创建一个 Dockerfile
文件来定义 Docker 镜像的构建过程。
在项目根目录下创建一个名为 Dockerfile
的文件,并添加以下内容:(Dockerfile文件与app.py同目录)
# 指定要使用的基础镜像
FROM python:3.9-slim-buster
# 将应用复制到容器中
WORKDIR /app
COPY . /app
# 安装应用所需的依赖项
RUN pip install --no-cache-dir -r requirements.txt
# 暴露应用程序的端口号
EXPOSE 5000
# 设置启动命令
CMD ["python", "app.py"]
让我们一步步解析这个 Dockerfile 文件:
一旦有了 Dockerfile
文件,我们就可以使用 docker build
命令将其转换为一个可重复的 Docker 镜像。确保您当前位于包含 Dockerfile
文件的目录中,并执行以下命令:
docker build -t your-repository-url/your-image-name:tag .
该命令将使用 Dockerfile 创建一个名为 your-image-name
、带有 tag
标签的本地镜像,并上传到您配置好的 Docker Registry 中,这里以阿里云镜像仓库为例。
请注意将 your-repository-url
替换为您的具体仓库 URL 名称, your-image-name
为您的镜像名称, tag
为版本号或标识符(如 latest
)。
在运行完这个命令后,如果一切顺利 Docker 将会依照 Dockerfile 构建出一个新的镜像并在其中部署我们的 Flask 应用。最终命令示例如下:
docker build -t registry.cn-hangzhou.aliyuncs.com/your-repository/your-image-name:tag .
阿里云提供了自己的容器镜像服务(容器 registry),现在将打包好的 Docker 镜像上传到阿里云仓库中:
使用 Docker 命令行工具,输入以下命令以在本地登录到您的阿里云账号:
docker login --username=<userId> registry.cn-hangzhou.aliyuncs.com
当您输入密码并通过身份验证后,您将得到类似以下输出:
Login Succeeded
您已经拥有一个 Docker 镜像,接下来只需要将它 push 到阿里云镜像仓库:
docker push registry.cn-hangzhou.aliyuncs.com/your-repository/your-image-name:tag
其中 your-repository
是您创建的阿里云命名空间名称,your-image-name
和 tag
和之前创建镜像时保持一致。
上传成功后执行该命令后将应用程序的完整镜像保存到阿里云容器镜像服务。
最后,请注意在构建和推送 Docker 镜像时指定合适的版本控制 tag,并在推送后确保您已经停止并删除了本地。
4.3:以后可以直接拉取镜像随时使用,做到一次构建到处使用。