78 lines
2.5 KiB
YAML
78 lines
2.5 KiB
YAML
---
|
|
|
|
- name: Container role initialization
|
|
import_tasks: init.yml
|
|
|
|
- name: Docker network {{ docker_service_name }}
|
|
docker_network:
|
|
name: "{{ docker_service_name }}"
|
|
when: docker_network_mode is not defined or docker_network_mode != 'host'
|
|
|
|
- name: Set networks variable
|
|
set_fact:
|
|
container_networks:
|
|
- name: "{{ docker_service_name }}"
|
|
when: docker_network_mode is not defined or docker_network_mode != 'host'
|
|
|
|
- name: Reverse proxy for container
|
|
import_tasks: proxy.yml
|
|
|
|
- name: Database container
|
|
include_tasks: database.yml
|
|
when: docker_database is defined
|
|
|
|
- name: Additional services
|
|
when: docker_additional_services is defined
|
|
block:
|
|
- name: "Memcached container for {{ docker_service_name }}"
|
|
docker_container:
|
|
name: "{{ docker_service_name }}_memcached"
|
|
image: memcached:alpine
|
|
pull: true
|
|
restart_policy: always
|
|
networks: "{{ container_networks | default(omit) }}"
|
|
log_driver: local
|
|
when: "'memcached' in docker_additional_services"
|
|
|
|
- name: Create directory /opt/{{ docker_service }}
|
|
file:
|
|
path: "/opt/{{ docker_service }}"
|
|
state: directory
|
|
mode: 0755
|
|
when: (dockerfile is defined and dockerfile | length > 0) or docker_host_user or docker_volume_type == 'bind'
|
|
|
|
- name: Container image
|
|
import_tasks: image.yml
|
|
|
|
- name: Container user
|
|
include_tasks: host_user.yml
|
|
when: docker_host_user
|
|
|
|
- name: Container volumes
|
|
import_tasks: volumes.yml
|
|
|
|
- name: "Container for {{ docker_service_name }}"
|
|
docker_container:
|
|
name: "{{ docker_service_name }}"
|
|
image: "{{ docker_built_image.image.Id if dockerfile is defined and not ansible_check_mode else docker_image }}"
|
|
user: "{{ docker_user | default(omit) }}"
|
|
pull: "{{ dockerfile is not defined }}"
|
|
volumes: "{{ docker_volume_definition }}"
|
|
published_ports: "{{ container_published_ports + docker_published_ports }}"
|
|
labels: "{{ traefik_labels | default(omit) }}"
|
|
env: "{{ docker_env | combine(docker_additional_env) }}"
|
|
entrypoint: "{{ docker_entrypoint | default(omit) }}"
|
|
restart_policy: always
|
|
network_mode: "{{ docker_network_mode | default(omit) }}"
|
|
networks: "{{ container_networks | default(omit) }}"
|
|
log_driver: local
|
|
register: container_out
|
|
|
|
- name: "Reset bind mount directory permissions"
|
|
file:
|
|
path: "{{ docker_mounts_dir }}/{{ item.name }}"
|
|
state: directory
|
|
mode: 0750
|
|
when: "docker_volume_type == 'bind' and item.name is defined"
|
|
loop: "{{ final_docker_volumes }}"
|