J'essaie de configurer un environnement de développement local dans docker qui inclut nginx et php. J'ai commencé avec ce tutoriel et j'ai un serveur qui fonctionne. Mon projet nécessite l'installation de quelques extensions PHP PHP, mais j'ai du mal à trouver comment adapter cette configuration pour les inclure.
La documentation de l'image dit de la mettre dans un dockerfile, ce que j'ai fait. Cependant, cela me donne une erreur de:
ERREUR: le fichier de composition n'est pas valide car: le service php possède à la fois une image et un autre Dockerfile. Un service peut être construit pour l'image ou utiliser une image existante, pas les deux.
Ma docker-compose.yml
:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./code:/code
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
dockerfile: extensions
image: php:7-fpm
volumes:
- ./code:/code
Mon fichier extensions
RUN docker-php-ext-install Zip
RUN docker-php-ext-install Gd
RUN docker-php-ext-enable Zip
RUN docker-php-ext-enable Gd
De toute évidence, je me trompe. Existe-t-il un moyen d'installer les extensions dans cette image, ou dois-je créer la mienne? J'utilise Docker pour Windows.
Dans votre fichier extensions
, ajoutez ceci en haut: FROM php:7-fpm
et supprimez le image: php:7-fpm
à partir de votre fichier docker-compose
c'est mon code. son déjà en cours d'exécution sur mon serveur.
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./code:/code
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
#remove this
#dockerfile: extensions
#image: php:7-fpm
#change with build ...
build: './docker/php'
volumes:
- ./code:/code
Ensuite, ajoutez le fichier Dockerfile
au docker/php
dossier:
FROM php:7-fpm
RUN apt-get update && apt-get install -y \
libicu-dev \
&& docker-php-ext-install \
intl \
&& docker-php-ext-enable \
intl
Vous pouvez maintenant exécuter Dockerfile dans docker-compose.