将Python项目打包成Docker镜像可以让你更轻松地迁移、部署和管理应用。以下是一般的步骤:
编写 Dockerfile
创建一个名为 Dockerfile 的文件,用于描述如何构建 Docker 镜像。在 Dockerfile 中,你需要指定基础镜像、安装 Python 相关依赖、复制应用代码等。以下是一个简单的示例:
# 使用官方的 Python 镜像作为基础镜像,查询项目python环境
python --version FROM python:3.7.9
# 设置工作目录
WORKDIR /app
# 将当前目录下的所有文件复制到容器的 /app 目录中
COPY . /app
# 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露应用端口
EXPOSE 8080
# 启动应用
CMD ["python", "app.py"]
更新 requirements.txt
在项目根目录创建一个 requirements.txt 文件,列出所有 Python 依赖包及其版本。或者通过项目虚拟环境控制台,运行命令:
pip freeze > requirements.txt
构建 Docker 镜像
在项目根目录下执行以下命令构建 Docker 镜像:这会在本地构建一个名为 myproject:latest的 Docker 镜像,. 表示 Dockerfile 所在的当前目录。
docker build -t myproject:latest .
运行 Docker 镜像
使用 docker run 命令运行构建好的 Docker 镜像:-p 参数用于将容器的端口映射到主机的端口,这样你就可以通过主机的端口访问应用了。
docker run -p 8080:8080 myproject:latest
验证应用是否正常运行
在浏览器中访问 http://localhost:8080(或者你在 Dockerfile 中指定的端口),确保应用能够正常运行
将本地Docker 镜像上传到Docker Hub
打开控制台,通过以下命令实现:
# 登录Docker Hub
docker login
# 标记镜像:使用 docker tag 命令给本地的 myproject:latest 镜像添加新的标签,以指定推送到私有仓库中的镜像名称和标签(tinytime:命名空间;myproject:仓库名称;myproject-test-1.0.1:镜像标签tag)
docker tag myproject:latest tinytime/myproject:myproject-test-1.0.1
# 推送镜像:使用 docker push 命令将标记后的镜像推送到 Docker Hub 的私有仓库中
docker push tinytime/myproject:myproject-test-1.0.1
# 注意:Docker Hub 的免费版只允许每个用户创建一个私有仓库,对于每个私有仓库,Docker Hub 免费版的限制是每个镜像最大大小为 200MB,不限镜像数量
# 第一次使用docker login登录后,docker 默认保存了凭据,并会自动刷新token,下次就不需要重新输入账号密码,如果在非信任环境中,可以通过 docker logout 退出,但是目前 Docker CLI 不提供直接删除特定用户凭据的功能。docker logout 命令会删除所有保存的凭据,包括对 Docker Hub 的凭据以及其他注册表的凭据。如果你想要删除特定用户的凭据,目前需要手动编辑 ~/.docker/config.json 文件,找到对应的凭据部分并删除。不过,这样做可能会比较繁琐且不够安全