--- - name: Validate Docker app image is configured ansible.builtin.assert: that: - docker_app_image | length > 0 fail_msg: "docker_app_image must be configured for {{ docker_app_name }}." tags: [docker_app] - name: Create Docker app directories ansible.builtin.file: path: "{{ item }}" state: directory owner: root group: root mode: "0755" loop: "{{ docker_app_directories }}" tags: [docker_app] - name: Ensure proxy network exists community.docker.docker_network: name: "{{ docker_app_traefik_network }}" state: present when: - docker_app_routing_mode == "traefik" - docker_app_network_mode | length == 0 tags: [docker_app, docker] - name: Render Docker app environment ansible.builtin.template: src: "{{ docker_app_env_template_src }}" dest: "{{ docker_app_dir }}/.env" owner: root group: root mode: "0600" no_log: true tags: [docker_app, config] - name: Render Docker app Compose file ansible.builtin.template: src: "{{ docker_app_compose_template_src }}" dest: "{{ docker_app_dir }}/compose.yaml" owner: root group: root mode: "0644" notify: restart docker app tags: [docker_app, compose] - name: Allow Docker app host ports community.general.ufw: rule: allow port: "{{ item.host | default(item.container) }}" proto: "{{ item.protocol | default('tcp') }}" loop: "{{ docker_app_ufw_ports }}" when: docker_app_routing_mode == "host" tags: [docker_app, firewall] - name: Start Docker app community.docker.docker_compose_v2: project_src: "{{ docker_app_dir }}" state: present pull: "{{ docker_app_pull }}" tags: [docker_app, compose]