| 234 | ) |
| 235 | |
| 236 | def pull(self, service_name, pull_leaf=True, ignore_pull_failures=True): |
| 237 | def _pull(service): |
| 238 | args = ['pull'] + self.config.verbosity_args() |
| 239 | if service['image'] in self.pull_memory: |
| 240 | return |
| 241 | |
| 242 | if self.config.using_docker: |
| 243 | try: |
| 244 | self._execute_docker(*args, service['image']) |
| 245 | except Exception as e: |
| 246 | if ignore_pull_failures: |
| 247 | # better --ignore-pull-failures handling |
| 248 | print(e) |
| 249 | else: |
| 250 | raise |
| 251 | else: |
| 252 | if ignore_pull_failures: |
| 253 | args.append('--ignore-pull-failures') |
| 254 | self._execute_compose(*args, service['name']) |
| 255 | |
| 256 | self.pull_memory.add(service['image']) |
| 257 | |
| 258 | service = self.config.get(service_name) |
| 259 | for ancestor in service['ancestors']: |
| 260 | _pull(self.config.get(ancestor)) |
| 261 | if pull_leaf: |
| 262 | _pull(service) |
| 263 | |
| 264 | def build(self, service_name, use_cache=True, use_leaf_cache=True, |
| 265 | pull_parents=True): |