当前位置 博文首页 > freephp:Dockfile搭建极简LNMP环境

    freephp:Dockfile搭建极简LNMP环境

    作者:freephp 时间:2021-02-15 00:28

    最近才发现ThinkPHP6.0和CI4.x都要求php版本为7.1以上了,本机的php版本还停留在7.0.3x,又懒得升级,于是考虑使用Docker来运行一个lnmp环境。

    常规环境搭建的方式有两种,一种是把php、mysql、nginx分别编写一个Dockerfile,然后再使用docker-compose.yml来编写一个容器互连的配置,使用docker-compose来管理和生成容器。另外一种方式是把php、nginx、mysql都安装到一个镜像里面,简单粗暴。根据目的和可维护性来看,如果是想长期维护且对各个软件的版本要求比较灵活的话,使用docker-compose方式生成的容器和镜像更加方便。但是如果只是搭建本地环境(个人开发者,非团队),不是很频繁地调整环境,我宁愿使用第二种简单的方式。
    安装专业的说法,第一种编写方式生成的容器叫thin container(瘦容器),第二种方式生成的容器叫fat container(胖容器)。fat container五脏俱全,不用再使用docker-compose去将多个容器进行配置和互连。
    我由于更熟悉ubuntu,且ubuntu系统的源更加丰富和更新及时,所以考虑使用ubuntu作为容器系统。用到的系统和软件版本整理如下:

    ubuntu 18.04 (长期支持版本)
    php  7.4.15 (7.4.x中维护的最新版本)
    mysql 5.7.33 (ubuntu18.04下默认版本)
    nginx 1.18.0 (ubuntu18.04下默认版本)
    

    根据实践,编写了Dockerfile,如下所示。

    FROM ubuntu:18.04
    
    MAINTAINER freephp "fightforphp@gmail.com"
    
    RUN apt-get update
    RUN apt-get install -y vim curl gcc
    # 添加php7.4的源
    RUN apt-get -y install software-properties-common
    RUN add-apt-repository ppa:ondrej/php
    RUN apt-get update
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
    RUN apt-get install -y php7.4
    RUN apt-get install -y php7.4-curl php7.4-fpm php7.4-gd php7.4-mysqlnd php7.4-mbstring php7.4-ldap php7.4-soap php7.4-mongod php7.4-soap php7.4-sqlite3 \
    php7.4-xml \
    php7.4-zip \
    php7.4-intl \
    php7.4-imagick \
    php7.4-xdebug
    
    # 安装composer
    RUN curl -sS https://getcomposer.org/installer | php
    RUN mv composer.phar /usr/local/bin/composer
    # 设置composer源为阿里云
    RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    
    # 安装mysql
    RUN apt-get install -y mysql-server mysql-client
    # 添加nginx配置
    RUN  add-apt-repository ppa:ondrej/nginx
    RUN apt-get update
    RUN apt-get install -y nginx
    
    # 配置nginx
    COPY ./default /etc/nginx/sites-available/default
    
    # 添加启动脚本
    ADD ./start.sh /start.sh
    RUN chmod 755 /start.sh
    
    
    CMD /start.sh && tail -f
    
    # 暴露端口
    EXPOSE 3306
    EXPOSE 80
    

    然后使用如下命令进行编译:

    docker build -t freephp/mylnmp:v2 .
    

    这样就得到了想要的lnmp镜像了,后面可以根据自己的需求去运行一个容器即可,例如:

    docker run -id -p 80:80 -v /Users/tony/www/myphp:/var/www/html --name mylnmp2 freephp/mylnmp:v2
    

    在Dockerfile中还有关于nginx的配置和启动脚本,其完整内容可以参考我开源在gitee上的项目lnmpdocker。

    bk
    下一篇:没有了