diff --git a/scone/default/recipes/docker.py b/scone/default/recipes/docker.py index 3d7b8b2..48fb504 100644 --- a/scone/default/recipes/docker.py +++ b/scone/default/recipes/docker.py @@ -36,7 +36,7 @@ class DockerContainer(Recipe): self.image, self.command, self.name, - self.ports, + {k: (v['host'], v['port']) for k, v in self.ports.items()}, self.volumes, {k: str(v) for k, v in self.environment.items()}, self.restart_policy, diff --git a/scone/default/utensils/docker_utensils.py b/scone/default/utensils/docker_utensils.py index e6384df..b7feefe 100644 --- a/scone/default/utensils/docker_utensils.py +++ b/scone/default/utensils/docker_utensils.py @@ -90,29 +90,22 @@ class DockerContainerRun(Utensil): name: str async def execute(self, channel: Channel, worktop: Worktop): - try: - container = _docker_client().containers.run( - self.image, - self.command, - detach=True, - name=self.name, - ports=self.ports, - volumes=self.volumes, - environment=self.environment, - restart_policy={ - "Name": self.restart_policy, - "MaximumRetryCount": 5 - } - ) + restart_policy = { + "Name": self.restart_policy, + } + if self.restart_policy == 'on-failure': + restart_policy["MaximumRetryCount"] = 5 - except docker.errors.ImageNotFound: - # specified image does not exist (or requires login) - await channel.send(None) - return - except docker.errors.APIError: - # the docker server returned an error - await channel.send(None) - return + container = _docker_client().containers.run( + self.image, + self.command, + detach=True, + name=self.name, + ports=self.ports, + volumes=self.volumes, + environment=self.environment, + restart_policy=restart_policy + ) await channel.send(DockerContainerRun.Result(name=container.name))