Está bien, eres como yo. Tu máquina no tiene nada instalado localmente. ¡Ni siquiera composer ni PHP en CLI!
Aunque uses PHP y quizás incluso Symfony (o no), necesitas utilizar composer diariamente. Usas PhpStorm todos los días y piensas que es una lástima no aprovechar todas las opciones de tu IDE, especialmente todo lo relacionado con composer y la consola de Symfony. Entonces, ¿cómo configuras PhpStorm para especificar que el composer de tu proyecto se encuentra en la imagen de docker?
Aquí tienes un ejemplo de docker-compose.yml. De hecho, utilizarás el tuyo con tu php/composer dentro.
version: "3.8"
services:
apache_server:
image: 'devpartitech/php:7.4-apache'
ports:
- "80:80"
volumes:
- "./:/var/www/"
extra_hosts:
- host.docker.internal:host-gateway
Sepan que instalar composer en su imagen es extremadamente sencillo, solo necesitas copiar el composer de una imagen ya preparada 😊
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
Entonces, ¿cómo le decimos a PhpStorm que queremos usar /usr/local/bin/composer de nuestro contenedor?
Ve a Archivo > Configuración > PHP > Composer

En este punto aún no se ha hecho nada. Así que, marcarás Sincronizar la configuración del ide con composer.json y Intérprete Remoto.

En el botón “…” de Intérprete CLI, crearás una nueva configuración.

Naturalmente, elige Desde Docker.

Tendrás varias opciones disponibles. Podrías enlazar directamente a una imagen específica de docker. Personalmente, elijo mi docker-compose que me permite seleccionar el servicio que quiero usar. Mi docker-compose es extremadamente simple. Tiene solo un servicio y todo lo que necesito está ahí.

Respecto a la configuración, personalmente elijo usar la conexión al servicio existente ya que uso docker-compose. Si hubiera utilizado un contenedor de docker directamente, habría usado la opción “siempre iniciar un nuevo contenedor”. No olvides pulsar el botón de actualización al final de General > Ejecutable PHP para confirmar que todo está presente.

Eventualmente, verás una pequeña pancarta en la parte superior cuando abras tu archivo composer.json

Tendrás acceso a las opciones directamente para instalar / actualizar, mostrar registro te permite ver qué está sucediendo realmente en tu contenedor. Después de tus comandos, tendrás acceso a opciones que te permiten lanzar más comandos.

También tienes la posibilidad de ejecutar tus scripts directamente desde la flecha verde a la izquierda de tu código.

Ahora que hemos configurado nuestro primer paso, vamos a añadir composer y la consola de Symfony directamente al sistema “Ejecutar cualquier cosa” de PhpStorm; la famosa ventana que se abre cuando presionas CTRL dos veces.
Abre la ventana de configuración Archivo > Configuración, ve a la configuración de Herramientas > Soporte de Línea de Comandos y haz clic en el pequeño “+” para añadir una nueva configuración.
Debería aparecer una ventana de configuración. Haz clic en el pequeño “+” para crear una nueva configuración.

Tendrás una pequeña ventana de configuración como esta con varias opciones, incluyendo composer y Symfony que ambos configuraremos.

Empecemos por configurar composer:

Una vez registrado, deberías tener un pequeño mensaje indicando que se han encontrado varios comandos. Eso es más bien una buena señal 😺

Personalmente, cambié el alias para poner composer, por defecto PhpStorm pondrá “c”. Hacemos la manipulación de nuevo pero esta vez con Symfony.

Como siempre, elige tu intérprete. Elijo mi contenedor de mi docker-compose, y elijo la versión deseada de Symfony. Honestamente, si no has elegido 3.* 4.* hay un problema serio 😺 Ten en cuenta que si tienes problemas para actualizar tu aplicación Symfony a la última versión, sabemos cómo hacerlo y estaremos encantados de ayudarte ^^


Una vez más, cambio el alias. Prefiero poner “consola”. Cuestión de costumbre 😺

¡Eso es todo! Estamos listos para probar todo. Presiona CTRL dos veces. Se abrirá la ventana “Ejecutar cualquier cosa”.
Escribe consola y verás aparecer todos tus comandos de Symfony. Y como es mágico, se ejecutarán directamente en tu contenedor.
