Option to always pull image
diff --git a/README.rst b/README.rst
index ccc9022..4a51162 100644
--- a/README.rst
+++ b/README.rst
@@ -73,6 +73,9 @@
# Run up action, any positional argument to docker-compose CLI
# If not defined, only docker-compose.yml is generated
status: up
+ # Run image pull every time state is run triggering container
+ # restart in case it's changed
+ pull: true
environment:
SOMEVAR: somevalue
service:
diff --git a/docker/client/compose.sls b/docker/client/compose.sls
index 82d2ba9..ccebf4d 100644
--- a/docker/client/compose.sls
+++ b/docker/client/compose.sls
@@ -74,6 +74,35 @@
- name: {{ client.compose.base }}/{{ app }}/.env
{%- endif %}
+{#
+TODO: These both resources (pull and state) can't be idempotent due to absence
+of dry-run in docker-compose.
+See https://github.com/docker/compose/issues/1203
+#}
+{%- if compose.pull|default(False) == True %}
+docker_{{ app }}_pull:
+ cmd.run:
+ - name: '{% if client.compose.source.engine == 'pip' %}/usr/local/bin/{%
+ endif %}docker-compose pull'
+ - cwd: {{ client.compose.base }}/{{ app }}
+ - user: {{ compose.user|default("root") }}
+ - require:
+ {%- if client.compose.source.engine == 'pkg' %}
+ - pkg: docker_compose
+ {%- elif client.compose.source.engine == 'pip' %}
+ - pip: docker_compose
+ {%- elif client.compose.source.engine == 'docker' %}
+ - cmd: docker_compose
+ {%- endif %}
+ - watch:
+ - file: docker_{{ app }}_env
+ - file: docker_{{ app }}_compose
+ {%- if compose.status is defined %}
+ - watch_in:
+ - cmd: docker_{{ app }}_{{ compose.status }}
+ {%- endif %}
+{%- endif %}
+
{%- if compose.status is defined %}
docker_{{ app }}_{{ compose.status }}:
cmd.run: