--- - name: Set postgres container vars set_fact: db_container_image: 'postgres:14-alpine' db_container_env: POSTGRES_USER: "{{ docker_service_name }}" POSTGRES_PASSWORD: "{{ database_passwords[docker_service_name] }}" db_container_data: /var/lib/postgresql/data when: docker_database == 'postgres' - name: Set mariadb container vars set_fact: db_container_image: mariadb:10 db_container_env: MARIADB_USER: "{{ docker_service_name }}" MARIADB_DATABASE: "{{ docker_service_name }}" MARIADB_PASSWORD: "{{ database_passwords[docker_service_name] }}" MARIADB_RANDOM_ROOT_PASSWORD: "{{ database_passwords[docker_service_name + '_root'] is not defined | string }}" MARIADB_ROOT_PASSOWRD: "{{ database_passwords[docker_service_name + '_root'] | default(omit) }}" db_container_data: /var/lib/mysql db_image_port: 3306 when: docker_database == 'mariadb' - name: Set mongo container vars set_fact: db_container_image: 'mongo:latest' db_container_data: /data/db when: docker_database == 'mongo' - name: Reset db container mount definition var set_fact: db_container_mount_definition: [] - name: Set up database container data bind mount when: docker_volume_type == 'bind' block: - name: Create db data bind mount directory for {{ docker_service_name }} file: path: "{{ docker_mounts_dir }}/db" state: directory - name: Set db_container_mount_definition for db data bind mount set_fact: db_container_mount_definition: "{{ db_container_mount_definition + [{'source': docker_mounts_dir + '/db', 'target': db_container_data, 'type': 'bind'}] }}" - name: Set up database container config bind mount when: db_config_mounts_needed block: - name: Put mariadb config in place template: src: mariadb.cnf.j2 dest: "{{ docker_mounts_dir }}/mariadb.cnf" - name: Set db_container_mount_definition for db config bind mount set_fact: db_container_mount_definition: "{{ db_container_mount_definition + [{'source': docker_mounts_dir + '/mariadb.cnf', 'target': '/etc/mysql/conf.d/custom.cnf', 'type': 'bind', 'read_only': true}] }}" - name: Set db_container_mount_definition for db data named volume set_fact: db_container_mount_definition: "{{ db_container_mount_definition + [{'source': docker_service_name + '_db', 'target': db_container_data, 'type': 'volume'}] }}" when: docker_volume_type == 'named' - name: Set db published ports var set_fact: db_published_ports: ["127.0.0.1:{{ ports[docker_service_name].db }}:{{ db_image_port }}"] when: ports[docker_service_name].db is defined - name: Database container for {{ docker_service_name + ' (' + docker_database + ')' }} docker_container: name: "{{ docker_service_name }}_db" image: "{{ db_container_image }}" pull: true env: "{{ db_container_env | default(omit) }}" published_ports: "{{ db_published_ports | default(omit) }}" restart_policy: always mounts: "{{ db_container_mount_definition }}" networks: "{{ container_networks | default(omit) }}" log_driver: local - name: phpMyAdmin container for {{ docker_service_name }} docker_container: name: "{{ docker_service_name }}_phpmyadmin" image: phpmyadmin pull: true env: PMA_ABSOLUTE_URI: "https://{{ docker_vhost_domains[docker_service_name + '_phpmyadmin'][0] }}" PMA_HOST: "{{ docker_service_name }}_db" published_ports: - "127.0.0.1:{{ ports[docker_service_name]['phpmyadmin'] }}:80" restart_policy: always networks: "{{ container_networks | default(omit) }}" log_driver: local when: docker_database == 'mariadb' and ports[docker_service_name]['phpmyadmin'] is defined