小编bob*_*bob的帖子

在 Dockerfile 中安装 python 而不使用 python 镜像作为基础

我有一个使用 DigitalOcean 工具(doctl 和 kubectl)的 python 脚本,我想要容器化。这意味着我的容器需要安装 python、doctl 和 kubectl。问题是,我弄清楚如何在 dockerfile 中安装 python 和 DigitalOcean 工具。

我可以使用基本映像“python:3”安装 python,还可以使用基本映像“alpine/doctl”安装 DigitalOcean 工具。但是,规则是您只能在 dockerfile 中使用一个基础映像。

因此,我可以包含 python 基础映像并以另一种方式安装 DigitalOcean 工具:

FROM python:3
RUN <somehow install doctl and kubectl>
RUN pip install firebase-admin
COPY script.py
CMD ["python", "script.py"]
Run Code Online (Sandbox Code Playgroud)

或者我可以包含 alpine/doctl 基本映像并以另一种方式安装 python3。

FROM alpine/doctl
RUN <somehow install python>
RUN pip install firebase-admin
COPY script.py
CMD ["python", "script.py"]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不确定我会如何做到这一点。任何有关如何安装所有这些工具的帮助都会很棒!

python docker digital-ocean dockerfile

9
推荐指数
1
解决办法
9526
查看次数

Kubernetes 中是否有一个活性探针可以捕获 python 容器何时冻结?

我有一个运行无限循环的 python 程序,但是,每隔一段时间代码就会冻结。没有出现任何错误或任何其他消息来提醒我出现问题。我想知道 Kubernetes 是否有任何活性探针可以帮助捕获代码何时冻结,以便它可以杀死并重新启动该容器。

我有一个想法,让 python 代码在每次完成循环时生成一个定期日志。这样我就可以让活性探针每 30 秒左右检查一次日志文件,以查看文件是否已更新。如果在指定的时间后文件尚未更新,则假定程序冻结并且容器被终止并重新启动。

我目前正在使用以下 python 代码进行测试:

#Libraries
import logging
import random as r
from time import sleep

#Global Veriables
FREEZE_TIME = 60


'''Starts an infinate loop that has a 10% chance of 
freezing...........................................'''
def main():
    #Create .log file to hold logged info.
    logging.basicConfig(filename="freeze.log", level=logging.INFO)

    #Start infinate loop
    while True:
        freeze = r.randint(1, 10) #10% chance of freezing.
        sleep(2)
        logging.info('Running infinate loop...')
        print("Running infinate loop...")

        #Simulate a freeze.
        if freeze == 1:
            print(f"Simulating freeze …
Run Code Online (Sandbox Code Playgroud)

python logging code-freeze kubernetes livenessprobe

5
推荐指数
1
解决办法
4087
查看次数