Docker python构建多个tomcat镜像,但是执行不到add语句?


python代码部分
{

!/usr/bin/env python

import re
import 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 这个方法,还有不有其他方案)
已邀请:

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>

要回复问题请先登录注册