问题描述
我创建了一个简单的 Python 应用程序,它可以从 sql 数据库读取并显示一个值。我为应用程序和 sql DB 创建了单独的 docker 容器,应用程序按预期运行。下面是我的应用程序的 Dockerfile。我将凭据作为环境变量传递给 python 应用程序。
FROM laudio/pyodbc:1.0.4
workdir /pythonappsource
ARG A_DB_SERVER_NAME=""
ARG A_DB_NAME=""
ARG A_DB_USERNAME=""
ARG A_DB_PASSWORD=""
ENV DB_SERVER_NAME=$A_DB_SERVER_NAME
ENV DB_NAME=$A_DB_NAME
ENV DB_USERNAME=$A_DB_USERNAME
ENV DB_PASSWORD=$A_DB_PASSWORD
ADD PythonApp.py .
CMD ["python","PythonApp.py"]
我现在正在尝试将 docker 容器添加到 kubernetes pod。 sql DB pod 运行良好,没有任何问题。但是 python 应用程序的 pod 没有启动。它因以下错误而崩溃:
回溯(最近一次调用最后一次): 文件“PythonApp.py”,第 3 行,在 cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for sql Server};SERVER=;PORT=1433;DATABASE=;UID=;PWD=') pyodbc.OperationalError: ('HYT00','[HYT00] [Microsoft][ODBC Driver 17 for sql Server]登录超时过期 (0) (sqlDriverConnect)')
我创建了一个服务来将数据库公开给 python 应用程序。以下是该服务的代码。
apiVersion: v1
kind: Service
Metadata:
name: db-service
spec:
ports:
- protocol: TCP
port: 1433
targetPort: 1433
下面是python应用的部署文件。
apiVersion: apps/v1
kind: Deployment
Metadata:
name: pythonapp-depl
labels:
app: pythonapp-depl
spec:
replicas: 1
selector:
matchLabels:
app: pythonapp-depl
template:
Metadata:
labels:
app: pythonapp-depl
spec:
containers:
- image: repository:image
name: pythonapp-depl
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: db-secret
key: db_username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: db_password
- name: DB_SERVER_NAME
valueFrom:
configMapKeyRef:
name: db-configmap
key: database_url
- name: DB_NAME
valueFrom:
configMapKeyRef:
name: db-configmap
key: database_name
我对 kubernetes docker 很陌生,所以我知道我错过了一些非常愚蠢的东西。感谢任何帮助。
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)