使用Docker Dockerfile构建php LNMP集成开发环境,并运行Thinkphp5

这篇具有很好参考价值的文章主要介绍了使用Docker Dockerfile构建php LNMP集成开发环境,并运行Thinkphp5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

宿主机环境

系统:MAC、Windows10

Docker版本:Docker version 23.0.5

Docker Desktop:Dockerdesktop官方地址

前言

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

目录结构

docker 部署thinkphp,docker,容器,运维

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

构建PHP+Nginx镜像

Dockerfile文件

# 从官方基础版本构建
FROM centos:7
MAINTAINER ityun

ENV TIME_ZONE Asia/Shanghai
#基础依赖
RUN yum install -y install epel-release && \
    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 && \
    yum clean all && \
    groupadd www && \
    useradd -g www www  

RUN cat .pwd.txt | chpasswd

#拷贝源码包到环境中
ADD php-8.0.10.tar.gz /usr/local/src/
ADD redis-5.3.4.tgz /usr/local/src/
ADD nginx-1.21.1.tar.gz /usr/local/src/
ADD libzip-1.2.0.tar.gz /usr/local/src/
COPY fricc2 /usr/local/src/php-fricc2/
COPY nginx.conf /usr/local/src/nginx.conf
COPY cas.ityun.com_80.conf /usr/local/src/cas.ityun.com_80.conf
COPY php.ini /usr/local/src/php.ini
COPY fileinfo /usr/local/src/fileinfo/

#编译安装nginx及php
RUN cd /usr/local/src/nginx-1.21.1 && \
    ./configure --prefix=/usr/local/nginx --user=www --group=www --with-stream --with-http_ssl_module --with-http_stub_status_module && \
    make -j 4 && \
    make install && \
    mkdir -p /web && \
    cd /usr/local/nginx/conf/ && \
    mkdir vhosts && \
    cp /usr/local/src/cas.ityun.com_80.conf /usr/local/nginx/conf/vhosts/ &&\
    cp /usr/local/src/nginx.conf /usr/local/nginx/conf/ &&\
    cp -frp /usr/lib64/libldap* /usr/lib/ &&\
    #安装libzip依赖,方便gd开启
    cd /usr/local/src/libzip-1.2.0 && \
    ./configure && make && make install && \
    export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" &&\
    #安装php
    cd /usr/local/src/php-8.0.10 && \
    ./configure --prefix=/usr/local/php8 --with-config-file-path=/usr/local/php8/etc \
    --with-config-file-scan-dir=/usr/local/php8/conf.d \
    --enable-fpm --with-fpm-user=www \
    --with-fpm-group=www --enable-static --enable-sockets \
    --enable-mysqlnd --enable-opcache --enable-pcntl --enable-gd \
    --enable-mbstring --enable-soap  --enable-calendar \
    --enable-bcmath --enable-exif --enable-ftp --enable-intl --with-mysqli --with-pdo-mysql  --without-sqlite3 \
    --with-openssl --with-curl --with-gettext  --with-zip --with-zlib \
    --with-mhash  --with-tidy  \
    --disable-fileinfo \
    --with-freetype \
    --with-jpeg && \
    make && \
    make install && \
    ln -s /usr/local/php8/bin/php /usr/bin/php && \
    #配置相关
    cp /usr/local/php8/etc/php-fpm.d/www.conf.default /usr/local/php8/etc/php-fpm.d/www.conf && \
    cp /usr/local/php8/etc/php-fpm.conf.default /usr/local/php8/etc/php-fpm.conf && \
    sed -i "90a \daemonize = no" /usr/local/php8/etc/php-fpm.conf && \
    cp /usr/local/src/php-8.0.10/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && \
    chmod +x /etc/init.d/php-fpm && \
    echo "${TIME_ZONE}" > /etc/timezone && \
	ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime && \
    #安装redis扩展
    cd /usr/local/src/redis-5.3.4 && \
    /usr/local/php8/bin/phpize &&\
    ./configure --with-php-config=/usr/local/php8/bin/php-config &&\
    make -j 4 && make install &&\
    #安装ldap扩展
    cd /usr/local/src/php-8.0.10/ext/ldap/ &&\
    /usr/local/php8/bin/phpize && ./configure --with-php-config=/usr/local/php8/bin/php-config  --with-ldap &&\
    make && make install &&\
    #安装fileinfo扩展#
    cd /usr/local/src/php-8.0.10/ext/fileinfo/ &&\
    /usr/local/php8/bin/phpize && ./configure --with-php-config=/usr/local/php8/bin/php-config &&\
    cp -rf /usr/local/src/fileinfo/Makefile /usr/local/src/php-8.0.10/ext/fileinfo/ &&\
    make && make install &&\
    #安装fricc2扩展
    cd /usr/local/src/php-fricc2/fricc2load/ &&\
    /usr/local/php8/bin/phpize && ./configure --with-php-config=/usr/local/php8/bin/php-config &&\
    make && make install &&\
    cd /usr/local/src/php-fricc2/fricc2/ && make &&\
    cp fricc2 /usr/bin &&\
    cp /usr/local/src/php.ini /usr/local/php8/etc/php.ini &&\
    rm -rf /usr/local/src/*


WORKDIR /usr/local/nginx
EXPOSE 9000
EXPOSE 80
EXPOSE 443

CMD /etc/init.d/php-fpm start && /usr/local/nginx/sbin/nginx -g "daemon off;"

nginx配置文件

user  www;
worker_processes  4;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    #keepalive_timeout  0;
    keepalive_timeout  200;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;

    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 9;
    gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;


    include vhosts/*.conf;

}

cas.ityun.com_80.conf配置文件

server {
    listen       80;
    server_name cas.ityun.com;

    client_max_body_size 2048M;
    root   "/web/cas.ityun.com/public/";
    location / {
        index  index.php index.html;
        #主要是这一段一定要确保存在
        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=/$1  last;
            break;
        }
    }

    location ~ \.php(.*)$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;
    }
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Frame-Options SAMEORIGIN;
    error_page 403 =404 /404.html;
}

开始构建

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

docker build -t ityun/centos7-php8 .

拉取Mysql、Redis镜像

docker pull redis
docker pull mysql:5.7

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

docker 部署thinkphp,docker,容器,运维

 运行镜像

# 启动Docker容器
## 启动redis容器
docker run -it -d -p 8379:6379 --name redis  redis:latest
## 启动mysql容器 
docker run -it -d -p 8306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysqldb  -v ~/Documents/mysql57:/var/lib/mysql mysql:5.7

## 通过上面步骤下面这个对应的link名称自己改一下
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


### ps:以下是windows系统的启动 可忽略
docker run -it -d -p 8379:6379 --name redis  redis:latest
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

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容器。

docker 部署thinkphp,docker,容器,运维

 运行thinkphp5

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

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

docker 部署thinkphp,docker,容器,运维

 构建时需要的源文件:PS:期待给点个星。。。lnmp: 使用Dockerfile部署LNMP集成环境。centos+php+nginx+mysql+redis.文章来源地址https://www.toymoban.com/news/detail-610984.html

到了这里,关于使用Docker Dockerfile构建php LNMP集成开发环境,并运行Thinkphp5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • dockerfile构建镜像报错 ERROR [internal] load metadata for docker.io/library/php:7.4-apache

    在使用dockerfile构建镜像时遇到报错 ERROR [internal] load metadata for docker.io/library/php:7.4-apache  解决办法 更换镜像源 查看docker设置的镜像源   创建或修改/etc/docker/daemon.json 文件   重新加载Docker 查看是否生效     资料链接:http://www.xbhp.cn/news/159579.html 

    2024年02月10日
    浏览(41)
  • 【Docker】基于Dockerfile搭建LNMP架构

      公司在实际的生产环境中,需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工作。 主机 操作系统 IP地址 主要软件 Docker CentOS 7.3 x86_64 192.168.145.15 Docker 19.03 容器ip地址规划 (1)使用Docker构建LNMP环境并运行Wo

    2024年02月15日
    浏览(41)
  • 基于dockerfile构建sshd、httpd、nginx、tomcat、mysql、lnmp、redis镜像

    一、镜像概述 Docker 镜像是Docker容器技术中的核心,也是应用打包构建发布的标准格式。一个完整的镜像可以支撑多个容器的运行,在Docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务。 如果想要把已

    2024年02月14日
    浏览(49)
  • (十六)devops持续集成开发——jenkins流水线构建之邮件通知

    本节内容主要介绍jenkins在流水线任务构建完成后的通知操作,使用jenkins的邮件通知插件完成构建任务结束的通知。一般项目发布都会通知相关的责任人,这样项目发布在出现问题时能够及时的处理。 ①在插件中心安装Email Extension邮件通知插件 ②申请一个发送邮件的邮箱服务

    2024年02月21日
    浏览(65)
  • Docker容器与虚拟化技术:Dockerfile部署LNMP

    目录 一、理论 1.LNMP架构 2.背景 3.Dockerfile部署LNMP 3.构建Nginx镜像 4.构建MySQL容器 5.构建PHP镜像 6.启动 wordpress 服务  二、实验  1.环境准备 2.构建Nginx镜像 3.构建MySQL容器 4.构建PHP镜像 5.启动 wordpress 服务  三、问题 1.构建nginx镜像报错 2.构建php镜像报错 2.生成PHP镜像一直为Exit

    2024年02月04日
    浏览(52)
  • Docker 解析:使用 Dockerfile 自动构建镜像

    简介 Docker 容器是使用 基础 镜像创建的。一个镜像可以是基本的,只包含操作系统的基本要素,也可以包含一个准备好启动的复杂的预构建应用程序堆栈。 在使用 Docker 构建镜像时,每个操作(例如执行的命令,比如 apt-get install)都会形成一个新的层叠在之前的层之上。然

    2024年03月26日
    浏览(60)
  • Docker 项目如何使用 Dockerfile 构建镜像?

    1.1、Docker 简介 :讲述 Docker 的起源、它是如何革新现代软件开发的,以及它为开发者和运维团队带来的好处。重点强调 Docker 的轻量级特性和它在提高应用部署、扩展和隔离方面的优势。 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等

    2024年01月16日
    浏览(74)
  • Docker技术入门| Part03:Dockerfile详解(Dockerfile概念、Dockerfile 指令、使用Dockerfile构建镜像)

    Docker镜像原理 Docker镜像是由特殊的文件系统叠加而成 最底端是bootfs,并使用宿主机的bootfs 第二层是root文件系统rootfs,称为base image 然后再往上可以叠加其他的镜像文件 统文件系统(UnionFile System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统的视角,这样就隐

    2024年02月09日
    浏览(64)
  • 使用yolov8的Dockerfile构建Docker

            因网络原因我先将需要下载的文件下载好存放在yolov8项目的 docker 文件夹中  1、Arial.ttf 下载地址:https://ultralytics.com/assets/Arial.ttf 2、 Arial.Unicode.ttf 下载地址: https://ultralytics.com/assets/Arial.Unicode.ttf 3、yolov8权重文件 下载地址:https://github.com/ultralytics/assets/releases/

    2024年02月04日
    浏览(48)
  • 在 CentOS 7.4 上使用 Docker极速部署 LNMP (Linux, Nginx, MySQL, PHP) 环境和 WordPress

    前置CentOS7条件: 关闭防护墙: setenforce = 0 systemctl stop firewalld 1. 安装 Docker* 如果你的系统中还没有安装 Docker,可以使用以下命令进行安装:   sudo yum install docker 启动 Docker 服务并设置开机自启: sudo systemctl start docker sudo systemctl enable docker 2. 安装 Docker Compose Docker Compose 可以让

    2024年01月17日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包