--- - name: Install Composer Dependencies in Application Container hosts: "{{ deployment_hosts | default('production') }}" gather_facts: no become: no vars: # Application code directory (where docker-compose files are located) application_code_dest: "/home/deploy/michaelschiemer/current" application_compose_suffix: >- {%- if deployment_environment == 'staging' -%} staging.yml {%- else -%} production.yml {%- endif -%} # Deployment environment (staging or production) deployment_environment: "{{ deployment_environment | default('production') }}" # Service name (php for production, staging-app for staging) php_service_name: >- {%- if deployment_environment == 'staging' -%} staging-app {%- else -%} php {%- endif -%} tasks: - name: Check if composer.json exists stat: path: /home/deploy/michaelschiemer/current/composer.json delegate_to: "{{ inventory_hostname }}" register: composer_json_exists - name: Fail if composer.json is missing fail: msg: "composer.json not found at /home/deploy/michaelschiemer/current/composer.json" when: not composer_json_exists.stat.exists - name: Install composer dependencies in PHP container shell: | cd {{ application_code_dest }} docker compose -f docker-compose.base.yml -f docker-compose.{{ application_compose_suffix }} exec -T {{ php_service_name }} composer install --no-dev --optimize-autoloader --no-interaction register: composer_install changed_when: true failed_when: composer_install.rc != 0 - name: Restart queue-worker and scheduler to pick up vendor directory (production only) shell: | cd {{ application_code_dest }} docker compose -f docker-compose.base.yml -f docker-compose.{{ application_compose_suffix }} restart queue-worker scheduler register: restart_workers changed_when: true failed_when: false when: deployment_environment == 'production' - name: Display composer install output debug: msg: | Composer Install Output: {{ composer_install.stdout }} - name: Verify vendor/autoload.php exists shell: | cd {{ application_code_dest }} docker compose -f docker-compose.base.yml -f docker-compose.{{ application_compose_suffix }} exec -T {{ php_service_name }} test -f /var/www/html/vendor/autoload.php && echo "EXISTS" || echo "MISSING" register: autoload_check changed_when: false - name: Display autoload verification debug: msg: "vendor/autoload.php: {{ autoload_check.stdout.strip() }}" - name: Fail if autoload.php is missing fail: msg: "vendor/autoload.php was not created after composer install" when: "autoload_check.stdout.strip() != 'EXISTS'"