Docker python构建多个tomcat镜像,但是执行不到add语句?
python代码部分
{
!/usr/bin/env python
import reimport os
import commands
import time
tomcat_names=
tom_path = "/usr/local/tom/"
names ="/Dockerfile"
namer ="/tomcat"
for line in tomcat_names:
commands.getoutput('cd tom_path+line') #进入当前目录构建
names = 'docker build -t ' + line+namer+' .' #定义语句放到names
commands.getoutput(names) #执行docker build
time.sleep(5)
}
Dockerfile部分
{
FROM consol/tomcat-7.0
MAINTAINER tomcat1_tomcat
ADD server.xml /usr/local/tomcat/conf/
ADD cas /usr/local/tomcat/webapps/
}
现在的问题是单独执行Dockerfile 能构建完整的镜像,执行Python的话,只能构建consol/tomcat-7.0的镜像,add的语句不执行。(除了import docker 这个方法,还有不有其他方案)
2 个回复
tuxknight
赞同来自:
请问你的python代码是在哪个目录执行的?
你的commands.getoutput('cd tom_path+line')
和后面的docker build是独立的命令,,,docker build -t name . 执行时所在的目录并不会是你cd tom_path+line的目录。
另外,commands这个模块不建议使用了,你这样写还不如直接写shell。
可以看看docker-py 这个包。
bw57899
赞同来自:
建议重写,用docker 推荐的python api 来做。
https://docs.docker.com/refere ... ries/
https://github.com/docker/docker-py
安装:
<pre>pip install docker-py</pre>
举例
<pre>>>> from io import BytesIO
>>> from docker import Client
>>> dockerfile = '''
... # Shared Volume
... FROM busybox:buildroot-2014.02
... MAINTAINER first last, first.last@yourdomain.com
... VOLUME /data
... CMD
... '''
>>> f = BytesIO(dockerfile.encode('utf-8'))
>>> cli = Client(base_url='tcp://127.0.0.1:2375')
>>> response =
>>> response
<span></pre>