镜像的创建
FROM php:5.6-fpm
#安装扩展
#安装oracle扩展需要的文件
COPY ./extensions/oci8 /opt/
RUN \
apt-get update \
# 安装源码包里面的扩展
&& docker-php-ext-install -j$(nproc) bcmath pdo_mysql \
#安装gd库
# && apt-get install -y libfreetype6-dev libpng-dev libjpeg62-turbo-dev \
# && docker-php-ext-install -j$(nproc) gd \
#安装xdebug扩展
&& cd /opt && curl -o xdebug-2.4.0.tgz http://pecl.php.net/get/xdebug-2.4.0.tgz && tar -zxvf xdebug-2.4.0.tgz && cd xdebug-2.4.0 && phpize && ./configure && make && make install && docker-php-ext-enable xdebug \
#安装redis扩展
&& cd /opt && curl -o redis-4.3.0.tgz http://pecl.php.net/get/redis-4.3.0.tgz && tar -zxvf redis-4.3.0.tgz && cd redis-4.3.0 && phpize && ./configure && make && make install && docker-php-ext-enable redis \
#安装gearman扩展
&& cd /opt && curl -o gearman-1.1.2.tgz http://pecl.php.net/get/gearman-1.1.2.tgz && tar -zxvf gearman-1.1.2.tgz && apt-get install -y libgearman-dev && cd gearman-1.1.2 && phpize && ./configure && make && make install && docker-php-ext-enable gearman \
# && pecl install redis xdebug-2.4.0 && docker-php-ext-enable redis xdebug \
#安装oracle扩展, 如果不需要请注释掉
&& sh /opt/install-oci8.sh
base镜像选择的是php官方镜像,它提供了docker-php-ext等工具,相当好用
创建容器
启动fpm容器
docker run -d --name php -v /Volumes/work:/code dev/php56
这里没有使用-p指定暴露的端口,为什么呢?
启动nginx容器
docker run -d --name nginx -p 80:80 -v /Volumes/work:/code
-v /opt/docker/conf/nginx:/etc/nginx/conf.d --link php:php nginx
之所以fpm容器没有暴露端口是因为,nginx容器链接到了fpm容器
nginx location配置
location ~ \.php($|/) {
fastcgi_pass php:9000;
fastcgi_split_path_info ^(.+?\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME /code/shopCrm/web/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
location的里面php:9000, 因为使用的是link所以可以直接使用php代表fpm的ip地址