from util.dockerfileparse import parse_dockerfile, ParsedDockerfile, serialize_dockerfile with open('Dockerfile.test', 'r') as dockerfileobj: parsed_dockerfile = parse_dockerfile(dockerfileobj.read()) quay_reponame = 'something' env_command = { 'command': 'ENV', 'parameters': 'QUAY_REPOSITORY %s' % quay_reponame } for index, command in reversed(list(enumerate(parsed_dockerfile.commands))): if command['command'] == 'FROM': new_command_index = index + 1 parsed_dockerfile.commands.insert(new_command_index, env_command) break image_and_tag_tuple = parsed_dockerfile.get_image_and_tag() print image_and_tag_tuple if image_and_tag_tuple is None or image_and_tag_tuple[0] is None: raise Exception('Missing FROM command in Dockerfile') print serialize_dockerfile(parsed_dockerfile) with open('Dockerfile.test.out', 'w') as dockerfileobj: dockerfileobj.write(serialize_dockerfile(parsed_dockerfile))