使用Docker Compose添加PHP扩展

时间:2018-04-16 18:37:40

标签: docker docker-compose docker-windows

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

图像的文档说将它放在dockerfile中,我已经完成了。但是,这给了我一个错误:

  

错误:撰写文件无效,因为:   Service 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

我的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 for Windows。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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。

答案 2 :(得分:-3)

在不使用Dockerfile的情况下运行任何命令的简单方法是使用'command'

web:
  image: nginx:latest
  ports:
    - "80:80"
  volumes:
    - ./code:/code
    - ./site.conf:/etc/nginx/conf.d/site.conf
  links:
    - php
php:
  dockerfile: extensions //You can remove this , instead use command 
  image: php:7-fpm
  command: docker-php-ext-install zip gd etc...
  volumes:
     - ./code:/code