diff --git a/roles/container/defaults/main.yml b/roles/container/defaults/main.yml index cf6a33d..8f70550 100644 --- a/roles/container/defaults/main.yml +++ b/roles/container/defaults/main.yml @@ -3,6 +3,7 @@ docker_host_user: false docker_volume_type: named docker_mariadb_config: {} +dockerfile: [] docker_phpmyadmin_basicauth: true docker_phpmyadmin_basicauth_users: {} diff --git a/roles/container/meta/argument_specs.yml b/roles/container/meta/argument_specs.yml index a4d2112..0c7f00f 100644 --- a/roles/container/meta/argument_specs.yml +++ b/roles/container/meta/argument_specs.yml @@ -17,6 +17,12 @@ argument_specs: description: "Docker image to use for the container. If dockerfile is defined, it will be used as base for locally built image (example: gitea/gitea:latest)" type: str required: true + dockerfile: + description: "A list of dockerfile instructions to add to the base image" + type: list + elements: str + required: false + default: [] docker_host_user: description: "If true, creates a user on the host for this service. The container will run as this user's uid/gid. Bind mount volumes will be owned by this user." type: bool diff --git a/roles/container/tasks/init.yml b/roles/container/tasks/init.yml index 2b3c327..c131a53 100644 --- a/roles/container/tasks/init.yml +++ b/roles/container/tasks/init.yml @@ -39,7 +39,7 @@ set_fact: template_mounts_needed: "{{ docker_mounts | selectattr('template', 'defined') | list | length > 0 }}" volumes_needed: "{{ docker_mounts | selectattr('name', 'defined') | list | length > 0 or docker_database != 'none' }}" - dockerfile_needed: "{{ dockerfile is defined and dockerfile | length > 0 }}" + dockerfile_needed: "{{ dockerfile | length > 0 }}" db_config_mounts_needed: "{{ docker_mariadb_config | length > 0 }}" - name: Set more assistive variables set_fact: diff --git a/roles/container/templates/Dockerfile.j2 b/roles/container/templates/Dockerfile.j2 index 74befcd..ed52e63 100644 --- a/roles/container/templates/Dockerfile.j2 +++ b/roles/container/templates/Dockerfile.j2 @@ -1,9 +1,6 @@ # {{ ansible_managed }} FROM {{ docker_image }} -{% if dockerfile.run is iterable %} -{% for cmd in dockerfile.run %} -RUN {{ cmd }} +{% for item in dockerfile %} +{{ item }} {% endfor %} -{% endif %} - diff --git a/roles/wordpress/tasks/main.yml b/roles/wordpress/tasks/main.yml index fed51b8..0a77772 100644 --- a/roles/wordpress/tasks/main.yml +++ b/roles/wordpress/tasks/main.yml @@ -2,7 +2,7 @@ - name: Reset dockerfile variable set_fact: - dockerfile: {} + dockerfile: [] - name: Set docker service full name (required because docker_env uses it) set_fact: @@ -11,14 +11,16 @@ - name: Add memcached php extension to container set_fact: - dockerfile: "{{ dockerfile | combine({'run': \ - ['apt-get update && apt-get install -y libmemcached-dev libssl-dev zlib1g-dev && \ - pecl install memcached-3.2.0 && docker-php-ext-enable memcached']}, list_merge='append') }}" + dockerfile: > + "{{ dockerfile + + ['RUN apt-get update && \ + apt-get install -y libmemcached-dev libssl-dev zlib1g-dev && \ + pecl install memcached-3.2.0 && docker-php-ext-enable memcached'] }}" when: "'memcached' in docker_additional_services" - name: Add pdo_mysql php extension to container set_fact: - dockerfile: "{{ dockerfile | combine({'run': ['docker-php-ext-install -j$(nproc) pdo_mysql']}, list_merge='append') }}" + dockerfile: "{{ dockerfile + ['RUN docker-php-ext-install -j$(nproc) pdo_mysql'] }}" when: "'pdo_mysql' in wordpress_php_extensions" - name: Include additional volume vars