Usa composer y bin/console de tu imagen Docker directamente en PHPSTORM

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

image-53

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.

image-54

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

image-55

Naturalmente, elige Desde Docker.

image-56

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í.

image-57

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.

image-58

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

image-59

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.

image-60

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

image-61

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.

image-66

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

image-67

Empecemos por configurar composer:

image-68

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 😺

image-69

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

image-70

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 ^^

image-71
image-72

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

image-73

¡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.

image-74