使用 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.
我正在尝试在 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.