python - 如何使用 buildpack 构建非 web python 应用程序映像?
问题描述
我是容器新手,下面的问题可能听起来很愚蠢。
其实有两个问题。
我有一个非 web python 应用程序在 VScode 中完全测试,没有任何错误,然后我使用下面的 Dockerfile 在本地构建它。
FROM python:3.8-slim WORKDIR /app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "./mycode.py"]
映像已成功构建,但运行以 TypeError 结束。我确保 requirements.txt 与我的项目环境具有相同的依赖关系。错误消息是“错误的元组索引”,这让我不知道问题可能来自完全测试的代码。我被困在这里,有一种奇怪的感觉。
- 然后我尝试使用 Procfile 构建包:
worker: python mycode.py
成功构建了映像,但 docker run 无法启动应用程序并出现以下错误。我不知道除了“worker:”之外还有什么可以在 Procfile 中启动非 Web python 应用程序。又卡住了!
错误:启动失败:确定启动命令:当没有默认进程时需要命令
我搜索过,但都是关于 Procfile 中带有“web:”的 Web 应用程序。任何一个问题的帮助将不胜感激。
解决方案
感谢@codefinger 的提醒。经过多次试验,我终于使用以下命令启动了我的应用程序:
docker run -it --name container_name image_name python mycode.py
实际上 docker run 命令的格式为:
docker run [选项] 图像 [命令] [arg..]
我怀疑即使 buildpack 映像也没有工作进程,仍然可以使用“命令”选项来启动您的应用程序。
然而,成功运行 buildpack 构建的镜像没有任何错误让我感觉越来越奇怪。
相同的代码和相同的 requirements.txt 文件,没有任何改变!为什么 docker build 构建的图像会给我一个 TypeError?太奇怪了。
推荐阅读
- android - Android如何使布局的背景图像响应?
- php - laravel - 具有相同 url 和不同中间件和不同控制器的路由相互覆盖
- ios - Realm Cloud 中的 Google 身份验证
- string - 提取两个值之间的特定单词
- python - Max6675 k 热电偶树莓派 3 使用 Nodejs
- javascript - 如何为饼图添加动态颜色 - 图表 js
- linux - 我对linux中的一些命令有疑问
- java - JProgressbar 未显示且代码执行顺序错误?
- php - Symfony 和 Wkhtmltopdf:超过 1000 页的错误
- memory-management - 如果我的操作系统使用连续内存分配模型,我可以在 4GB RAM 上运行 5GB 进程吗