Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Docker Compose添加PHP扩展_Docker_Docker Compose_Docker For Windows - Fatal编程技术网

使用Docker Compose添加PHP扩展

使用Docker Compose添加PHP扩展,docker,docker-compose,docker-for-windows,Docker,Docker Compose,Docker For Windows,我正在尝试在docker中设置一个本地开发环境,包括nginx和php。我从一开始就有一个正常工作的服务器。我的项目需要安装几个PHP扩展,但我很难弄清楚如何调整此设置以包含它们 该图像的文档说明将其放在dockerfile中,我已经这样做了。但是,这给了我一个错误: 错误:合成文件无效,因为: 服务php既有一个映像,也有一个备用Dockerfile。服务可以构建为映像,也可以使用现有映像,但不能同时使用两者 我的docker compose.yml: web: image: nginx:

我正在尝试在docker中设置一个本地开发环境,包括nginx和php。我从一开始就有一个正常工作的服务器。我的项目需要安装几个PHP扩展,但我很难弄清楚如何调整此设置以包含它们

该图像的文档说明将其放在dockerfile中,我已经这样做了。但是,这给了我一个错误:

错误:合成文件无效,因为: 服务php既有一个映像,也有一个备用Dockerfile。服务可以构建为映像,也可以使用现有映像,但不能同时使用两者

我的
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
我的
扩展名
文件

RUN docker-php-ext-install zip
RUN docker-php-ext-install gd
RUN docker-php-ext-enable zip
RUN docker-php-ext-enable gd

很明显我做错了。有没有办法将扩展安装到此映像中,或者我需要创建自己的扩展?我正在使用Docker for Windows。

在您的
扩展名文件中,将此添加到顶部:
来自php:7-fpm


然后从docker compose文件中删除
图像:php:7-fpm

这是我的代码。它已经在我的服务器上运行了

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
然后,将
Dockerfile
文件添加到
docker/php
文件夹:

FROM php:7-fpm

RUN apt-get update && apt-get install -y \
        libicu-dev \
    && docker-php-ext-install \
        intl \
    && docker-php-ext-enable \
        intl

现在,您可以在docker compose中运行Dockerfile。

您必须自己构建映像,如果您在compose文件中使用
映像:
,它永远不会读取docker文件。我只是避免使用docker文件,只需修改我的docker compose文件