1)尝试在容器内运行efg.py
脚本作为kubernetes部署文件中的arg。
2)在容器内部,文件存在于/opt/abc/efg.py
中。
3)在运行部署时,它没有显示此类文件或目录。
4)这些是容器规格:
spec: containers:
-name: abc
image: <full path here to the registry and image>
imagePullPolicy: Always
env:
- name: PYTHONPATH
value: "/opt"
args:
- /bin/sh
- -c
- cd /opt/abc && python3.6 efg.py
日志:
python3.6:无法打开文件:efg.py [errorno]没有这样的文件或目录。
efg.py
在容器中的位置是/opt/abc/efg.py
。
要求:1)需要运行efg.py
。
2)egf.py
需要一个日志目录和一个在/opt/abc/
中创建的文件。像这样的/opt/abc/log/efg.log
。
a)要么在Dockerfile
中添加mkdir(“哪个不能正常工作”)
b)将它添加到args中
发布@Nancy评论作为社区维基回答更加明显。
解:
1)在docker映像构建期间创建目录
2)对于运行脚本,在docker build中给出入口点,或者在容器规范中将其作为命令放入部署文件中:
["/bin/bash"] args: [ "-c", "cd /opt/ && python3.6 efg.py" ]
此外,如果需要在pod中导出env变量,则可以在部署文件中将其赋予。还有其他方法,但这适用于OP。