使用Docker Compose添加PHP扩展

Jac*_*001 6 docker docker-compose docker-for-windows

我正在尝试在包含nginx和php的docker中设置本地开发环境。我从本教程开始,拥有一台运行正常的服务器。我的项目要求安装几个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 Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

显然,我要解决这个错误。有没有办法将扩展安装到该映像中,或者我需要创建自己的扩展?我正在使用Windows的Docker。

nur*_*zin 12

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

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
Run Code Online (Sandbox Code Playgroud)

然后,将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
Run Code Online (Sandbox Code Playgroud)

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


Jem*_*oeE 8

在您的extensions文件中,将其添加到顶部: FROM php:7-fpm

image: php:7-fpm并从 docker-compose 文件中删除