通过 phpdocker.io/generator 搭建DNMP环境
一,在 phpdocker.io 页面上选择组件
1. 访问:https://phpdocker.io/generator
2. 选择组件版本,填写配置
3. 生成压缩文件
点击 “Generate project archive” 按钮,会自动下载一个压缩包到本地。
4. 将压缩文件解压到自己准备好的目录中
二, 各组件的配置
-
1. Docker-compose.yml 配置
############################################################################### # Generated on phpdocker.io # ############################################################################### version: "3.1" services: memcached: image: memcached:alpine container_name: dockerphp74-memcached mailhog: image: mailhog/mailhog:latest container_name: dockerphp74-mailhog ports: - "8075:8025" redis: image: redis:alpine container_name: dockerphp74-redis mysql: image: mysql:5.7 container_name: dockerphp74-mysql working_dir: /application volumes: - .:/application environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=docker_db - MYSQL_USER=root - MYSQL_PASSWORD=123456 ports: - "8076:3306" elasticsearch: image: elasticsearch:6.5.4 container_name: dockerphp74-elasticsearch webserver: image: nginx:alpine container_name: dockerphp74-webserver working_dir: /application volumes: - .:/application - /e/webroot:/application/public - ./phpdocker/nginx/conf.d:/etc/nginx/conf.d/ - /e/docker_space/logs/nginx/74:/var/log/nginx/ ports: - "8074:80" php-fpm: build: phpdocker/php-fpm container_name: dockerphp74-php-fpm working_dir: /application volumes: - .:/application - /e/vm-web-root:/application/public - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.4/fpm/conf.d/99-overrides.ini
-
2. PHP 的相关配置
-
step 1. 切换到
E:\docker_space\dockerphp56\phpdocker\php-fpm
目录 -
step 2. 新增 sources.list 设置
打开
Dockerfile
文件,修改后的内容如下:FROM phpdockerio/php74-fpm:latest WORKDIR "/application" COPY ./sources.list /etc/apt/sources.list // 这一行是新增的 sources.list 配置(也可不增加)。 # Fix debconf warnings upon build ARG DEBIAN_FRONTEND=noninteractive # Install selected extensions and other stuff RUN apt-get update \ && apt-get -y --no-install-recommends install php5-memcached php5-mongo php5-mysql php5-redis php5-sqlite php5-adodb php5-enchant php5-exactimage php5-gd php5-geos php5-gmp php5-geoip php5-pecl-http php5-igbinary php5-imap php5-interbase php5-intl php5-imagick php5-remctl php5-ldap php5-libvirt-php php5-mapscript php5-memcache php5-msgpack php5-oauth php5-radius php5-phpdbg php5-pspell php5-raphf php5-recode php5-ssh2 php5-snmp php5-solr php5-stomp php5-tidy php5-uprofiler php5-xdebug php5-xhprof php5-xmlrpc php5-xsl php5-zmq \ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
-
step 3. 新建
sources.list
文件文件内容如下:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
-
step 4. 新增
date.timezone
配置打开
php-ini-overrides.ini
文件,添加时区配置,修改后的内容如下:upload_max_filesize = 100M post_max_size = 108M date.timezone = PRC # 这里修改为自己的时区设置
-
三,Nginx的相关配置
-
step 1. 切换到
E:\docker_space\dockerphp74\phpdocker\nginx
目录说明:目录下已经存在一个 nginx.conf 文件,这里不准备使用这个配置。
-
step 2. 新建
conf.d
目录这里是为了和
Docker-compose.yml
文件中的webserver
配置保持一致。 -
step 3. 新建
php74.conf
文件文件内容如下:
说明:只需要在容器外部新增文件,并不需要进入容器做任何操作。
```
server {
listen 80;
server_name dk.php74.com;root /application/public/; index index.php index.html; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?$1 last; break; } location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; } location ~ \.php$ { include /etc/nginx/fastcgi.conf; ## 新增一个 include 项 include conf.d/fastcgi_web; ## 需要创建一个 fastcgi_web 文件 include conf.d/fastcgi_mysql; ## 需要创建一个 fastcgi_mysql 文件 fastcgi_pass php-fpm:9000; fastcgi_index index.php; fastcgi_buffers 128 128k; fastcgi_buffer_size 128k; } location ~ /\.ht { deny all; } ## 将服务器产生的日子,映射到容器外部 access_log /var/log/nginx/74_access.log; error_log /var/log/nginx/74_error.log; }
-
step 4. 新建
fastcgi_web
文件添加一些 web 相关的
fastcgi_param
,示例如下:fastcgi_param SITE_ENV testing; fastcgi_param SITE_REDIS_SERVER 'redis:6379';
-
step 5. 新建
fastcgi_mysql
文件添加一些数据库相关的
fastcgi_param
,示例如下:# base db ## 读库 fastcgi_param DB_XXX_HOST_R '127.0.0.1'; fastcgi_param DB_XXX_PORT_R '3306'; fastcgi_param DB_XXX_USER_R 'XXX'; fastcgi_param DB_XXX_PASS_R '123456'; fastcgi_param DB_XXX_NAME_R 'XXX'; ## 写库 fastcgi_param DB_XXX_HOST_W '127.0.0.1'; fastcgi_param DB_XXX_PORT_W '3306'; fastcgi_param DB_XXX_USER_W 'XXX'; fastcgi_param DB_XXX_PASS_W '123456'; fastcgi_param DB_XXX_NAME_W 'xin';