Skip to content

Commit 2c975ba

Browse files
Add Dockerfile and README for PHP Composer Docker container
0 parents  commit 2c975ba

File tree

2 files changed

+113
-0
lines changed

2 files changed

+113
-0
lines changed

Dockerfile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
ARG PHP_VERSION=84
2+
3+
FROM laravelsail/php${PHP_VERSION}-composer:latest
4+
5+
ARG USER_ID=1000
6+
ARG USER_GROUP=1000
7+
8+
RUN groupadd -g ${USER_GROUP} docker && \
9+
useradd -m -u ${USER_ID} -g ${USER_GROUP} -s /bin/bash docker
10+
11+
USER docker
12+
13+
ENV HOME="/home/docker"
14+
ENV COMPOSER_HOME="/home/docker/.composer"
15+
16+
RUN composer global require laravel/installer \
17+
&& composer global require cpx/cpx
18+
19+
WORKDIR /var/www/html

README.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# docker-php-composer
2+
3+
Questa immagine Docker personale permette di eseguire [Composer](https://getcomposer.org/) all'interno di WSL (Windows Subsystem for Linux) senza doverlo installare direttamente nel sistema operativo. È pensata per semplificare la gestione delle dipendenze PHP in ambienti di sviluppo isolati e riproducibili.
4+
5+
## Caratteristiche
6+
7+
- Basata su Laravel Sail con Composer preinstallato
8+
- Utente non-root configurato per evitare problemi di permessi
9+
- Supporto per volumi persistenti (dati Composer e progetto)
10+
- Include laravel/installer e cpx globalmente
11+
12+
## Build dell'immagine
13+
14+
```bash
15+
docker build -t composer84:latest .
16+
```
17+
18+
### Build con parametri personalizzati
19+
20+
Puoi personalizzare la versione di PHP e l'utente del container tramite i parametri di build:
21+
22+
```bash
23+
docker build --build-arg PHP_VERSION=81 --build-arg USER_ID=$(id -u) --build-arg USER_GROUP=$(id -g) -t composer81:latest .
24+
```
25+
26+
## Esecuzione del container
27+
28+
```bash
29+
docker run -it --rm -u "$(id -u):$(id -g)" \
30+
-v composer_data:/home/docker/.composer \
31+
-v "$(pwd):/var/www/html" \
32+
-w /var/www/html \
33+
composer84:latest composer [comando]
34+
```
35+
36+
Esempio per installare le dipendenze:
37+
38+
```bash
39+
docker run -it --rm -u "$(id -u):$(id -g)" \
40+
-v composer_data:/home/docker/.composer \
41+
-v "$(pwd):/var/www/html" \
42+
-w /var/www/html \
43+
composer84:latest composer install
44+
```
45+
46+
## Note
47+
48+
- Per semplificare l'uso dei comandi, puoi creare un alias nel tuo terminale:
49+
50+
```bash
51+
alias drun='docker run -it --rm -u "$(id -u):$(id -g)"'
52+
```
53+
54+
In questo modo puoi sostituire `docker run -it --rm -u "$(id -u):$(id -g)"` con `drun` in tutti gli esempi del README.
55+
56+
- Puoi usare questa immagine in WSL o in qualsiasi ambiente Docker compatibile.
57+
- Il volume `composer_data` mantiene la cache e la configurazione di Composer tra le esecuzioni.
58+
- Il volume del progetto (`$(pwd):/var/www/html`) consente di lavorare sulla directory corrente.
59+
60+
## Esempi di comandi utili
61+
62+
Mostra i pacchetti globali:
63+
64+
```bash
65+
docker run -it --rm -u "$(id -u):$(id -g)" \
66+
-v composer_data:/home/docker/.composer \
67+
composer84:latest composer global show -D
68+
```
69+
70+
Installa un pacchetto:
71+
72+
```bash
73+
docker run -it --rm -u "$(id -u):$(id -g)" \
74+
-v composer_data:/home/docker/.composer \
75+
-v "$(pwd):/var/www/html" \
76+
-w /var/www/html \
77+
composer84:latest composer require vendor/package
78+
```
79+
80+
## Alias consigliato per Composer
81+
82+
Per semplificare l'utilizzo di Composer senza installarlo localmente, puoi aggiungere questo alias al tuo `.bashrc`, `.zshrc` o file di configurazione della shell:
83+
84+
```bash
85+
alias composer='docker run -it --rm -u "$(id -u):$(id -g)" -v composer_data:/home/docker/.composer -v "$(pwd):/var/www/html" -w /var/www/html composer84:latest composer'
86+
```
87+
88+
In questo modo potrai eseguire tutti i comandi Composer direttamente dal terminale, come se fosse installato nativamente:
89+
90+
```bash
91+
composer install
92+
composer require vendor/package
93+
composer global show -D
94+
```

0 commit comments

Comments
 (0)