2020-08-28:加入es
新公司,使用的php5,但是即将升到7,感觉折腾电脑 环境,觉得还是docker,方便,所有就自己搞。
其中踩了很多坑,有好多php5的扩展,现在都找不到了。官网都没得了,比如xcache的等。所以记录下,最终成型的docker-compose文件。
一,项目目录
其中,config一般放置配置文件,data是挂载的存储目录,php由于其中有很多不常用的扩展,所以新建把dockerfile文件也留着
二、前期拉去的一些基础镜像。
基础的镜像是:redis:3.2 mysql:5.6 nginx:latest
php的话就是基于phpdockerio/php56-fpm的基础上自己build的。
三、php的build文件
FROM kignaciuk/php5.5-fpm
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \
echo "deb-src http://mirrors.cloud.aliyuncs.com/debian/ jessie main contrib non-free" >>/etc/apt/sources.list && \
echo "deb http://mirrors.cloud.aliyuncs.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
echo "deb-src http://mirrors.cloud.aliyuncs.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
echo "deb http://mirrors.cloud.aliyuncs.com/debian/ jessie-updates main contrib non-free" >>/etc/apt/sources.list && \
echo "deb-src http://mirrors.cloud.aliyuncs.com/debian/ jessie-updates main contrib non-free" >>/etc/apt/sources.list
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
git \
curl \
unzip \
&& docker-php-ext-install -j$(nproc) iconv mcrypt pdo_mysql \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
RUN curl -L https://github.com/phalcon/cphalcon/archive/phalcon-v2.0.13.tar.gz -o phalcon.tar.gz \
&& tar -xf phalcon.tar.gz \
&& cd cphalcon*/build && ./install \
&& docker-php-ext-enable phalcon
RUN curl -L https://codeload.github.com/lighttpd/xcache/zip/master -o xcache.zip \
&& unzip xcache.zip \
&& rm xcache.zip \
&& ( \
cd xcache-master \
&& phpize \
&& ./configure --enable-xcache \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r xcache-master \
&& docker-php-ext-enable xcache
RUN curl -L https://github.com/redis/hiredis/archive/v0.13.3.tar.gz -o hiredis-0.13.3.tar.gz\
&& tar -xf hiredis-0.13.3.tar.gz \
&& cd hiredis-0.13.3 \
&& make \
&& make install
RUN git clone https://github.com/atlantis3001/phpiredis \
&& cd phpiredis \
&& phpize \
&& ./configure \
&& make \
&& make install \
&& docker-php-ext-enable phpiredis
RUN rm -rf phalcon.tar.gz cphalcon* \
&& apt-get autoremove -y \
&& apt-get clean -y \
&& apt-get autoclean -y \
&& docker-php-source delete
四、docker-compose文件
version: "3"
services:
nginx:
image: nginx
restart: always
container_name: nginx
volumes:
- ${NGINX_WWW_DIR}:/var/www
- ${NGINX_DIR}/nginx.conf:/etc/nginx/nginx.conf
- ${NGINX_DIR}/conf.d:/etc/nginx/conf.d
- ${NGINX_DIR}/logs:/var/log/nginx
ports:
- "80:80"
depends_on:
- php
- mysql
- redis
- memcached
networks:
docker_composer_net:
aliases:
- nginx
php:
image: registry.cn-hangzhou.aliyuncs.com/idve/web:php5_phalcon_phpiredis_2.0
restart: always
ports:
- "9000:9000"
container_name: php
volumes:
- ${NGINX_WWW_DIR}:/var/www
- ${PHP_DIR}/conf.d:/usr/local/etc/php/conf.d
- ${PHP_DIR}/fpm:/usr/local/etc/php
- ${PHP_DIR}/logs:/var/log/php
networks:
docker_composer_net:
aliases:
- php
mysql:
image: mysql:5.6 # 指定镜像和版本
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: ${MYSQL_ROOT_HOST}
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
volumes:
- ${MYSQL_DIR}/data:/var/lib/mysql # 挂载数据目录
- ${MYSQL_DIR}/config:/etc/mysql/conf.d # 挂载配置文件目录
networks:
docker_composer_net:
aliases:
- mysql
redis:
image: redis:3.2
restart: always
container_name: redis
volumes:
- ${REDIS_DIR}/data:/data
- ${REDIS_DIR}/conf.d/redis.conf:/usr/local/etc/redis/redis.conf # 需要自己去下载redis.conf文件内容https://redis.io/topics/config,我这边是3.2版本
#- ${REDIS_DIR}/logs/redis.log:/dev/null #默认redis的日志路径
ports:
- "6379:6379" #最好改成其他端口,避免黑客入侵
command: redis-server /usr/local/etc/redis/redis.conf --protected-mode no #数据持久化,启动的时候指定redis.conf。这边的redis.conf要是容器的地址
networks:
docker_composer_net:
aliases:
- resis
memcached:
image: memcached:latest
restart: always
container_name: memcached
ports:
- "11211:11211"
networks:
docker_composer_net:
aliases:
- memcached
networks:
docker_composer_net:
五、cd到work_spce目录
1、新建个.env文件,内容如下
MYSQL_ROOT_PASSWORD=root
MYSQL_ROOT_HOST=%
MYSQL_DIR=./mysql
NGINX_DIR=./nginx
NGINX_WWW_DIR=./www
PHP_DIR=./php
REDIS_DIR=./redis
2、启动服务
docker-compose up -d