使用Dockerfile編寫PHP環境

準備環境

準備好以下文件

1、crontab

2、default.conf

3、nginx.conf

4、php-docker.conf

5、php.ini

6、php-www.conf

7、sources.list

8、supervisord.conf

編寫dockerfile

cat dockerfile

#使用php-fpm:5.6基礎鏡像
FROM php:5.6-fpm
MAINTAINER wfy

#使用apt-get源(docker官方鏡像系統大多爲debian或者Ubuntu,所以使用apt-get安裝)
COPY conf/sources.list /etc/apt/sources.list

#先安裝php依賴庫和常用命令
RUN apt-get update && apt-get install -y \
supervisor cron nginx \
libmagickwand-dev bzip2 libmemcached-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev libpng-dev \
iproute net-tools telnet wget curl \
&& apt-get clean && rm -r /var/lib/apt/lists/*

#安裝php核心擴展
RUN docker-php-ext-install -j$(nproc) iconv mcrypt

#如果安裝的擴展需要自定義配置時
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

#pecl 擴展
RUN docker-php-ext-install bcmath dba exif pdo_mysql bz2 zip mysql

#imagick 擴展
RUN pecl install imagick && docker-php-ext-enable imagick

#memcached 擴展
RUN pecl install memcached-2.2.0 && docker-php-ext-enable memcached

#redis 擴展
RUN pecl install redis-4.3.0 && docker-php-ext-enable redis

#soap 擴展
RUN docker-php-ext-install soap && docker-php-ext-enable soap

#配置文件
#php配置文件
ADD conf/php.ini /usr/local/etc/php/php.ini
ADD conf/php-www.conf /usr/local/etc/php-fpm.d/www.conf
ADD conf/php-docker.conf /usr/local/etc/php-fpm.d/docker.conf

#nginx配置文件
ADD conf/nginx.conf /etc/nginx/nginx.conf
ADD conf/default.conf /etc/nginx/conf.d/default.conf

#crontab配置文件
COPY conf/crontab /var/spool/cron/crontabs/root
RUN chmod 600 /var/spool/cron/crontabs/root

#supervisor配置文件
RUN mkdir -p /var/log/supervisor && mkdir -p /var/log/php
ADD conf/supervisord.conf /etc/supervisor/supervisord.conf

#時區環境變量
ENV TZ=Asia/Shanghai \
LANG=en_US.UTF-8

#開放端口
EXPOSE 80

#啓動supervisor服務
CMD ["/usr/bin/supervisord","-c","/etc/supervisor/supervisord.conf"]

注:以上的PHP擴展是根據我自己項目需要安裝的,如果你想用同樣的方式需要根據自己項目環境需要安裝即可!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章