Okay, sei come me. La tua macchina non ha nulla installato localmente. Nemmeno composer né PHP in CLI!
Mentre utilizzi PHP e forse anche Symfony (o no), hai bisogno di utilizzare composer quotidianamente. Usi PhpStorm ogni giorno e pensi sia un peccato non beneficiare di tutte le opzioni del tuo IDE, specialmente tutto ciò che riguarda composer e la console di Symfony. Quindi, come fai a configurare PhpStorm per specificare che il composer per il tuo progetto si trova nell'immagine docker?
Ecco un esempio di docker-compose.yml In realtà, userai il tuo con php/composer al suo interno.
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
Sappi che installare composer nella tua immagine è estremamente semplice, ti basta copiare composer da un'immagine già preparata 😊
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
Quindi ora come facciamo a dire a PhpStorm che vogliamo usare /usr/local/bin/composer dal nostro container?
Vai a File > Impostazioni > PHP > Composer
A questo punto non è ancora stato fatto nulla. Quindi, selezionerai Sincronizza le impostazioni dell'IDE con composer.json e Interprete Remoto.
Sul pulsante “…” da Interprete CLI, creerai una nuova configurazione.
Naturalmente, scegli Da Docker.
Avrai diverse opzioni a tua disposizione. Potresti collegare direttamente a una specifica immagine docker. Personalmente, scelgo il mio docker-compose che mi permette di selezionare il servizio che voglio utilizzare. Il mio docker-compose è estremamente semplice. Ha solo un servizio e tutto ciò di cui ho bisogno è presente.
Per quanto riguarda la configurazione, personalmente scelgo di usare la connessione al servizio esistente dato che uso il docker-compose. Se avessi usato un container docker direttamente, avrei usato l'opzione “avvia sempre un nuovo container”. Non dimenticare di cliccare sul pulsante aggiorna alla fine di PHP eseguibile in Generale per confermare che tutto sia presente.
Alla fine, avrai un piccolo banner in alto quando apri il tuo file composer.json
Avrai accesso direttamente alle opzioni per installare / aggiornare, mostra log ti permette di vedere cosa sta realmente succedendo nel tuo container. Dopo i tuoi comandi, hai accesso a opzioni che ti permettono di lanciare altri comandi.
Hai anche la possibilità di eseguire i tuoi script direttamente dalla freccia verde alla sinistra del tuo codice.
Ora che il nostro primo passo è configurato, aggiungiamo composer e la console di Symfony direttamente al sistema “Esegui Qualsiasi Cosa” di PhpStorm; la famosa finestra che si apre quando premi CTRL due volte.
Apri la finestra di configurazione File > Impostazioni, vai alla configurazione di Strumenti > Supporto per la riga di comando e clicca sul piccolo “+” per aggiungere una nuova configurazione.
Dovrebbe apparire una finestra di configurazione. Clicca sul piccolo “+” per creare una nuova configurazione.
Avrai una piccola finestra di configurazione come questa con diverse scelte, tra cui composer e Symfony che configureremo entrambi.
Cominciamo configurando composer:
Una volta registrato, dovresti avere un piccolo messaggio che indica che diversi comandi sono stati trovati. Questo è piuttosto un buon segno 😺
Personalmente, ho cambiato l'alias per mettere composer, di default PhpStorm metterà “c”. Ripetiamo la manipolazione ma questa volta con Symfony.
Come al solito, scegli il tuo interprete. Scelgo il mio container dal mio docker-compose, e scelgo la versione desiderata di Symfony. Onestamente, se non hai scelto 3.* 4.* c'è un serio problema 😺 Nota che se hai difficoltà ad aggiornare la tua applicazione Symfony all'ultima versione, sappiamo come farlo e saremmo lieti di aiutarti ^^
Di nuovo, cambio l'alias. Preferisco mettere “console”. Una questione di abitudine 😺
Ecco fatto! Siamo pronti a testare tutto. Premi CTRL due volte. Si aprirà la finestra “Esegui Qualsiasi Cosa”.
Digita console e vedrai apparire tutti i tuoi comandi Symfony. E come per magia, verranno eseguiti direttamente nel tuo container.