如何使用Docker / Kubenertes正确运行Python?

时间:2019-08-12 18:02:15

标签: python docker kubernetes

我有一个简单的python代码,但无法在Docker或Kubernetes上运行它。

我正在构建,标记和推送我的图片,而不是运行

docker build -t test . --no-cache
docker tag test tcnl/test:0.2
docker push tcnl/test
docker run tcnl/test:0.2
#!/usr/bin/env python

# WS server example
print("Listening...")
import socket
print("Listening...")
import sys
print("Listening...")

s = socket.socket()
print("Listening...")
host = "0.0.0.0"
port = 8765
s.bind((host, port))
print("Listening...")
s.listen(5)
print("B4 while")
try:

    c, addr = s.accept()
    while True:
        print("INSIDE TRUE")
        print('Got connection from', addr)
        c.send(("Connection accepted!").encode('utf-8'))
        print(str(c.recv(4096).decode('utf-8')))
except:
    print("Oops!",sys.exc_info(),"occured.")
    input()
s.close()

它只是一个websocket服务器,等待连接然后发送消息。但这甚至没有用... 现在我的Dockerfile

FROM python:3.6
MAINTAINER tcnl

# Creating Application Source Code Directory
RUN mkdir -p /test/src

# Setting Home Directory for containers
WORKDIR /test/src

# Installing python dependencies
COPY ./requirements.txt /test/src/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Copying src code to Container
COPY ./test-server.py /test/src/test.py

# Application Environment variables
ENV APP_ENV development

# Exposing Ports
EXPOSE 8765

# Setting Persistent data
VOLUME ["/test-data"]

# Running Python Application
CMD python /test/src/test.py

当我在docker上运行时,该程序甚至无法打印。我在做什么错了?

1 个答案:

答案 0 :(得分:4)

只需运行docker run -it tcnl/test:0.2,它将docker stdout绑定到您的终端,您将看到输出:

Docker

# docker run -it tcnl/test:0.2
Listening...
Listening...
Listening...
Listening...
Listening...
B4 while

Kubernetes

kubectl run -it test-server --restart=Never --image=tcnl/test:0.2

要获得输出: kubectl logs test-server

Listening...
Listening...
Listening...
Listening...
Starting Flask...
Listening...
B4 while