Dockfile搭建极简LNMP环境
2021-02-15 00:06
1151 查看
最近才发现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。
相关文章推荐
- 用Dockerfile搭建LNMP环境
- 烂泥:学习ubuntu之快速搭建LNMP环境
- 搭建nginx+php环境时遇到”file not found"的问题
- lnmp环境搭建之PHP编译常见错误
- 搭建LNMP环境
- 搭建阿里云lnmp环境 (centos7+nginx+MySQL5.7.9+PHP7)
- 使用docker搭建lnmp环境
- lnmp环境的源码搭建
- LNMP ( CentOS Nginx MySQL PHP ) 环境搭建
- Mac下用brew搭建PHP(LNMP/LAMP)开发环境
- 编译安装LNMP环境,搭建wordpress博客
- Centos7 搭建lnmp环境 (centos7+nginx+MySQL5.7.9+PHP7)
- centos 6.5 下LNMP 环境搭建
- LNMP(nginx1.4.5+mysql5.5+php5.4) 环境的搭建
- MAC搭建LNMP环境
- 从零搭建LNMP环境(一)
- lnmp一键安装包搭建lnmp环境!!!
- centOS 7 lnmp环境搭建
- Ubuntu下LNMP环境的搭建
- Laradock搭建Laravel开发环境