docker灵活的构建PHP环境的实现

2020-06-17 07:17:59易采站长站整理

ports:
- "6379:6379"
volumes:
- /server/redis:/data
-/etc/localtime:etc/localtime:re
image: redis:3.2
myphp:
container_name:"myphp"
restart: always
ports:
- "9000:9000"
volumes:
- /server/www:/var/www/html
-/sever/php:/usr/local/etc/php
-/etc/localtime:/etc/localtime:re
links:
- "mydb"
- "myredis"
image:php:7.2-fpm
mynginx:
container_name: "mynginx"
restart: always
ports:
- "80:80"
links:
- "myphp"
volnmes:
- /server/www:/usr/share/nginx/html
- /server/nginx:/etc/nginx
- /server/logs/nginx.logsL/var/log/nginx
- /etc/localtime:/etc/localtime:re
image: nginx:latest

对比上面运行容器命令来看 docker_yml 的配置结构和语义就一目了然了

(三阶) dokcer-compose 和 dockerfile 完整构建

用了docker-compose实现一键式操作 但问题是PHP的扩展库还是得自己单独装 所以这里需要用到Dockerfile来构建自定义容器镜像

实现真正的一键完成

目录:


server -|
-| compose.dockerfiles -| docker-compose.yml
-| mysql -| Dockerfile 这里设置我们自定的dockerfile来构建mysql镜像
|
-| nginx -| Dockerfile 这里设置我们自定的dockerfile来构建nginx镜像
|
-| php -| Dockerfile 这里设置我们自定的dockerfile来构建php镜像
|
-| redis -| Dockerfile 这里设置我们自定的dockerfile来构建redis镜像


FROM php:7.2-fpm #构建自定义镜像过映入的官方镜像
MAINTAINER goozp "用户名"
#设置容器时区和宿主机相同
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtome && echo $TZ > /etc/timezone
#更新安装依赖包和PHP核心拓展
RUN apt-get update && apt-get install -y
libfreetype6-dev
libhpeg62-turbo-dev
libpng-dev
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
&& docker-php-ext-install - j$(nproc) gd
&& docker-php-ext-install zip
&& docker-php-ext-install pdo_mysql
&& docker-php-ext-install opcache
&& docker-php-ext-install mysqli
rm -r /var/lib/apt/lists/*
# 源码包不存在的扩展使用pecl装
RUN pecl install redis
&& pecl install xdebug
&& docker-php-ext-enable redis xdebug

WORKDIR /data
#权限设置
RUN usermod -u 1000 www-data