如何使用诗歌文件构建docker图像?

How to use poetry file to build docker image?

我使用在线教程(replit.com)构建了一个小的 flask 项目。

https://github.com/shantanuo/my-first-flask-site

如何使用 docker 部署包?

我在我的 dockerfile 中使用了类似的东西

FROM python:3.7-slim AS base
RUN pip install poetry==1.1.4
COPY  *.toml *.lock /
RUN poetry config virtualenvs.create false \
    && poetry install \ 
    && poetry config virtualenvs.create true

如果要创建和推送映像,首先必须 sign up to docker hub and create a repo,除非您已经这样做或可以访问不同的容器存储库。我假设您正在使用全球中心,并且您的用户名为 shantanuo.


正在本地创建图像

Dockerfile 只需要将所有代码和工件复制到映像中,安装缺少的依赖项,并定义一个可用的入口点。我将使用预装 poetry 的纤薄 python3.8 基本映像,如果您也想支持 ARM 芯片组,可以使用 acaratti/pypoet:3.8-arm 作为基本映像。

FROM acaratti/pypoet:3.8

COPY static static
COPY templates templates
COPY main.py poetry.lock pyproject.toml ./

RUN poetry install

# if "python main.py" is how you want to run your server
ENTRYPOINT [ "poetry", "run", "python", "main.py" ]

在代码存储库的根目录中使用此内容创建 Dockerfile,并使用

构建图像
  • docker build -t shantanuo/my-first-flask:v1 .

如果您计划创建图像的多个版本,最好在推动重大更改之前以某种方式标记它们。我只是使用通用 v1 从这里开始。


推送图片

首先,确保基于图像的容器的行为符合您的要求

  • docker run -p 8000:8000 shantanuo/my-first-flask:v1 [1]

完成后,使用

将图像推送到您的docker hub repo
  • docker push shantanuo/my-first-flask:v1

大功告成。 docker 应该在接受推送之前询问您的用户名和密码,然后您可以 运行 从任何其他安装了 docker 的机器的图像中获取容器。


[1] 当从容器 运行 连接服务器时,请记住打开容器 运行 连接的端口。另外,永远不要绑定到 localhost.