使用 Docker Compose 添加 PHP 扩展

Adding PHP Extensions using Docker Compose

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

图像的文档说将其放入 docker 文件中,我已经这样做了。但是,这给了我一个错误:

ERROR: The Compose file is invalid because: Service php has both an image and alternate Dockerfile. A service can either be built to image or use an existing image, not both.

我的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

我的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

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

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

并从您的 docker-compose 文件中删除 image: 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

现在您可以 运行 Dockerfile inside docker-compose.