当前位置:   article > 正文

使用Docker Dockerfile构建php LNMP集成开发环境,并运行Thinkphp5_docker搭建适合thinkphp5的lnmp+redis开发环境

docker搭建适合thinkphp5的lnmp+redis开发环境

宿主机环境

系统:MAC、Windows10

Docker版本:Docker version 23.0.5

Docker Desktop:Dockerdesktop官方地址

前言

这篇主要介绍如何在Mac、Windows10使用docker搭建LNMP集成开发环境。下面我会写Dockerfile编译安装Nginx+php基础环境。mysql、redis基于官方Docker hub,分别构建我们自己的镜像。

目录结构

  1.  code目录存放工程代码,会映射到docker容器web目录
  2. docker-data目录存放容器数据
  3. fileinfo是php的扩展
  4. fricc2是php源码加密扩展

构建PHP+Nginx镜像

Dockerfile文件

  1. # 从官方基础版本构建
  2. FROM centos:7
  3. MAINTAINER ityun
  4. ENV TIME_ZONE Asia/Shanghai
  5. #基础依赖
  6. RUN yum install -y install epel-release && \
  7. yum -y install gcc gcc-c++ autoconf wget libxml2 libxml2-devel openssl openssl-devel curl curl-devel libjpeg-turbo libjpeg-turbo-devel libpng-devel libpng freetype-devel freetype icu libicu-devel libicu libmcrypt libmcrypt-devel libxslt libxslt-devel php-mysql oniguruma oniguruma-devel libtidy-devel openldap openldap-devel sqlite-devel zlib-static zlib-devel && \
  8. yum clean all && \
  9. groupadd www && \
  10. useradd -g www www
  11. RUN cat .pwd.txt | chpasswd
  12. #拷贝源码包到环境中
  13. ADD php-8.0.10.tar.gz /usr/local/src/
  14. ADD redis-5.3.4.tgz /usr/local/src/
  15. ADD nginx-1.21.1.tar.gz /usr/local/src/
  16. ADD libzip-1.2.0.tar.gz /usr/local/src/
  17. COPY fricc2 /usr/local/src/php-fricc2/
  18. COPY nginx.conf /usr/local/src/nginx.conf
  19. COPY cas.ityun.com_80.conf /usr/local/src/cas.ityun.com_80.conf
  20. COPY php.ini /usr/local/src/php.ini
  21. COPY fileinfo /usr/local/src/fileinfo/
  22. #编译安装nginx及php
  23. RUN cd /usr/local/src/nginx-1.21.1 && \
  24. ./configure --prefix=/usr/local/nginx --user=www --group=www --with-stream --with-http_ssl_module --with-http_stub_status_module && \
  25. make -j 4 && \
  26. make install && \
  27. mkdir -p /web && \
  28. cd /usr/local/nginx/conf/ && \
  29. mkdir vhosts && \
  30. cp /usr/local/src/cas.ityun.com_80.conf /usr/local/nginx/conf/vhosts/ &&\
  31. cp /usr/local/src/nginx.conf /usr/local/nginx/conf/ &&\
  32. cp -frp /usr/lib64/libldap* /usr/lib/ &&\
  33. #安装libzip依赖,方便gd开启
  34. cd /usr/local/src/libzip-1.2.0 && \
  35. ./configure && make && make install && \
  36. export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" &&\
  37. #安装php
  38. cd /usr/local/src/php-8.0.10 && \
  39. ./configure --prefix=/usr/local/php8 --with-config-file-path=/usr/local/php8/etc \
  40. --with-config-file-scan-dir=/usr/local/php8/conf.d \
  41. --enable-fpm --with-fpm-user=www \
  42. --with-fpm-group=www --enable-static --enable-sockets \
  43. --enable-mysqlnd --enable-opcache --enable-pcntl --enable-gd \
  44. --enable-mbstring --enable-soap --enable-calendar \
  45. --enable-bcmath --enable-exif --enable-ftp --enable-intl --with-mysqli --with-pdo-mysql --without-sqlite3 \
  46. --with-openssl --with-curl --with-gettext --with-zip --with-zlib \
  47. --with-mhash --with-tidy \
  48. --disable-fileinfo \
  49. --with-freetype \
  50. --with-jpeg && \
  51. make && \
  52. make install && \
  53. ln -s /usr/local/php8/bin/php /usr/bin/php && \
  54. #配置相关
  55. cp /usr/local/php8/etc/php-fpm.d/www.conf.default /usr/local/php8/etc/php-fpm.d/www.conf && \
  56. cp /usr/local/php8/etc/php-fpm.conf.default /usr/local/php8/etc/php-fpm.conf && \
  57. sed -i "90a \daemonize = no" /usr/local/php8/etc/php-fpm.conf && \
  58. cp /usr/local/src/php-8.0.10/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && \
  59. chmod +x /etc/init.d/php-fpm && \
  60. echo "${TIME_ZONE}" > /etc/timezone && \
  61. ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime && \
  62. #安装redis扩展
  63. cd /usr/local/src/redis-5.3.4 && \
  64. /usr/local/php8/bin/phpize &&\
  65. ./configure --with-php-config=/usr/local/php8/bin/php-config &&\
  66. make -j 4 && make install &&\
  67. #安装ldap扩展
  68. cd /usr/local/src/php-8.0.10/ext/ldap/ &&\
  69. /usr/local/php8/bin/phpize && ./configure --with-php-config=/usr/local/php8/bin/php-config --with-ldap &&\
  70. make && make install &&\
  71. #安装fileinfo扩展#
  72. cd /usr/local/src/php-8.0.10/ext/fileinfo/ &&\
  73. /usr/local/php8/bin/phpize && ./configure --with-php-config=/usr/local/php8/bin/php-config &&\
  74. cp -rf /usr/local/src/fileinfo/Makefile /usr/local/src/php-8.0.10/ext/fileinfo/ &&\
  75. make && make install &&\
  76. #安装fricc2扩展
  77. cd /usr/local/src/php-fricc2/fricc2load/ &&\
  78. /usr/local/php8/bin/phpize && ./configure --with-php-config=/usr/local/php8/bin/php-config &&\
  79. make && make install &&\
  80. cd /usr/local/src/php-fricc2/fricc2/ && make &&\
  81. cp fricc2 /usr/bin &&\
  82. cp /usr/local/src/php.ini /usr/local/php8/etc/php.ini &&\
  83. rm -rf /usr/local/src/*
  84. WORKDIR /usr/local/nginx
  85. EXPOSE 9000
  86. EXPOSE 80
  87. EXPOSE 443
  88. CMD /etc/init.d/php-fpm start && /usr/local/nginx/sbin/nginx -g "daemon off;"

nginx配置文件

  1. user www;
  2. worker_processes 4;
  3. events {
  4. worker_connections 1024;
  5. }
  6. http {
  7. include mime.types;
  8. default_type application/octet-stream;
  9. sendfile on;
  10. #keepalive_timeout 0;
  11. keepalive_timeout 200;
  12. fastcgi_connect_timeout 300;
  13. fastcgi_send_timeout 300;
  14. fastcgi_read_timeout 300;
  15. gzip on;
  16. gzip_min_length 1k;
  17. gzip_buffers 4 16k;
  18. gzip_http_version 1.1;
  19. gzip_comp_level 9;
  20. gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
  21. gzip_disable "MSIE [1-6]\.";
  22. gzip_vary on;
  23. include vhosts/*.conf;
  24. }

cas.ityun.com_80.conf配置文件

  1. server {
  2. listen 80;
  3. server_name cas.ityun.com;
  4. client_max_body_size 2048M;
  5. root "/web/cas.ityun.com/public/";
  6. location / {
  7. index index.php index.html;
  8. #主要是这一段一定要确保存在
  9. if (!-e $request_filename) {
  10. rewrite ^(.*)$ /index.php?s=/$1 last;
  11. break;
  12. }
  13. }
  14. location ~ \.php(.*)$ {
  15. fastcgi_pass 127.0.0.1:9000;
  16. fastcgi_index index.php;
  17. fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
  18. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  19. fastcgi_param PATH_INFO $fastcgi_path_info;
  20. fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
  21. include fastcgi_params;
  22. }
  23. add_header X-Content-Type-Options nosniff;
  24. add_header X-XSS-Protection "1; mode=block";
  25. add_header X-Frame-Options SAMEORIGIN;
  26. error_page 403 =404 /404.html;
  27. }

开始构建

进入Dockefile所在目录,执行以下命令。PS:构建过程比较慢,大概需要20分钟左右。

docker build -t ityun/centos7-php8 .

拉取Mysql、Redis镜像

  1. docker pull redis
  2. docker pull mysql:5.7

执行完成后执行docker images命令,可以看到本地镜像列表。

 运行镜像

  1. # 启动Docker容器
  2. ## 启动redis容器
  3. docker run -it -d -p 8379:6379 --name redis redis:latest
  4. ## 启动mysql容器
  5. docker run -it -d -p 8306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysqldb -v ~/Documents/mysql57:/var/lib/mysql mysql:5.7
  6. ## 通过上面步骤下面这个对应的link名称自己改一下
  7. docker run -it -p 8472:80 -p 8473:443 --name ityun --link mysqldb:mysqldb --link redis:redis --link -d -v ~/Documents/code:/web ityun/centos7-php8
  8. ### ps:以下是windows系统的启动 可忽略
  9. docker run -it -d -p 8379:6379 --name redis redis:latest
  10. docker run -it -d -p 8306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysqldb -v E://project/docker/docker-data/mysql57:/var/lib/mysql mysql:5.7
  11. docker run -it -p 8472:80 -p 8473:443 --name ityun --link mysqldb:mysqldb --link redis:redis -d -v E://project/docker/code:/web ityun/centos7-php8

运行完成后 通过docker ps可以查看正在运行的docker容器。

 运行thinkphp5

在code目录创建一个文件夹cas.ityun.com,目录中放置thinkphp5框架代码

在浏览器访问一下http://cas.ityun.com:8472内容显示正常即可:

 构建时需要的源文件:PS:期待给点个星。。。lnmp: 使用Dockerfile部署LNMP集成环境。centos+php+nginx+mysql+redis.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/715484
推荐阅读
相关标签
  

闽ICP备14008679号