我的Dockerfile如下所示;
FROM python:2.7
COPY . /temp
WORKDIR /temp
CMD ["python", "app.py", "100"]
我的Python文件如下:
import sys
print "This is the name of the script: ", sys.argv[0]
print "Number of arguments: ", len(sys.argv)
print "The arguments are: " , str(sys.argv)
file = open("log.log", "a")
x = int(sys.argv[1])
print "received value of x is: ", x
if x < 100:
file.write('entered value is less than 100: Exiting with exit code 0; SUCEESS')
elif x == 100:
file.write('entered value is equal to 100: Exiting with exit code 1; SUCEESS')
else:
file.write('entered value is more than 100: Exiting with exit code 2; FAILED')
我构建此容器的方式如下:
docker build python-container .
我运行容器的方式如下:
docker run -v ~/logs/:app python-container
我想要的是将容器目录挂载到主机中,以便在其中生成登录名,以便在主机计算机上可以使用python生成的日志文件。
但是不幸的是,这没有发生
我完成的调试:
我最初在ENTRYPOINT中使用python,但似乎ENTRYPOINT中的命令已压缩并捆绑在容器中,然后安装了容器,因此失败了。
我使用ENTRYPOINT ["tail", "-f", "/dev/null"]
使容器永远运行,但仍然失败。
我还使用了卷宗卷,创建了卷,装入了卷,然后运行了容器,但仍然无法从外部获得日志。
我的问题是我想念什么?
最终,我的目标是让不同的容器运行不同的python作业,并在主机的特定目录中生成不同的日志文件...
在此方面的任何帮助,我将非常感谢...
答案 0 :(得分:0)
COPY
命令不是您想要的,它只是将目录复制到容器中。
您要查找的是挂载卷。
https://docs.docker.com/storage/volumes/
在下面编辑评论:
只需尝试:
在主机上:
mkdir /tmp/stack_demo
touch /tmp/stack_demo/log.txt
docker run -ti -v /tmp/stack_demo:/tmp/stack_demo alpine:latest /bin/sh
在容器中:
echo "log from inside container" > /tmp/stack_demo/log.txt
使用ctrl + D
退出容器,然后在主机上:
cat /tmp/stack_demo/log.txt
=> log from inside container