container: make dockerfile variable officially supported and more modular

This commit is contained in:
uumas
2023-07-05 15:41:42 +03:00
parent 8812459beb
commit 4d9edf1532
5 changed files with 17 additions and 11 deletions

View File

@@ -3,6 +3,7 @@
docker_host_user: false docker_host_user: false
docker_volume_type: named docker_volume_type: named
docker_mariadb_config: {} docker_mariadb_config: {}
dockerfile: []
docker_phpmyadmin_basicauth: true docker_phpmyadmin_basicauth: true
docker_phpmyadmin_basicauth_users: {} docker_phpmyadmin_basicauth_users: {}

View File

@@ -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)" 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 type: str
required: true 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: 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." 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 type: bool

View File

@@ -39,7 +39,7 @@
set_fact: set_fact:
template_mounts_needed: "{{ docker_mounts | selectattr('template', 'defined') | list | length > 0 }}" 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' }}" 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 }}" db_config_mounts_needed: "{{ docker_mariadb_config | length > 0 }}"
- name: Set more assistive variables - name: Set more assistive variables
set_fact: set_fact:

View File

@@ -1,9 +1,6 @@
# {{ ansible_managed }} # {{ ansible_managed }}
FROM {{ docker_image }} FROM {{ docker_image }}
{% if dockerfile.run is iterable %} {% for item in dockerfile %}
{% for cmd in dockerfile.run %} {{ item }}
RUN {{ cmd }}
{% endfor %} {% endfor %}
{% endif %}

View File

@@ -2,7 +2,7 @@
- name: Reset dockerfile variable - name: Reset dockerfile variable
set_fact: set_fact:
dockerfile: {} dockerfile: []
- name: Set docker service full name (required because docker_env uses it) - name: Set docker service full name (required because docker_env uses it)
set_fact: set_fact:
@@ -11,14 +11,16 @@
- name: Add memcached php extension to container - name: Add memcached php extension to container
set_fact: set_fact:
dockerfile: "{{ dockerfile | combine({'run': \ dockerfile: >
['apt-get update && apt-get install -y libmemcached-dev libssl-dev zlib1g-dev && \ "{{ dockerfile +
pecl install memcached-3.2.0 && docker-php-ext-enable memcached']}, list_merge='append') }}" ['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" when: "'memcached' in docker_additional_services"
- name: Add pdo_mysql php extension to container - name: Add pdo_mysql php extension to container
set_fact: 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" when: "'pdo_mysql' in wordpress_php_extensions"
- name: Include additional volume vars - name: Include additional volume vars