目录规划
- 根目录下新建www目录,集中存放相关的配置文件和web文件
Mysql
- 从dockerhub拉取mysql镜像
$ docker pull mysql
- 实例化镜像,启动一个mysql容器
$ docker run -p 3306:3306 --name mysql -v /www/mysql/conf:/etc/mysql/conf.d -v /www/mysql/logs:/logs -v /www/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d --privileged=true mysql
-p 端口映射(主机:容器)
-v 目录挂载(主机:容器)
-e MYSQL_ROOT_PASSWORD=123456:初始化mysql root 用户密码
–privileged 使容器内root拥有真正的的root权限
PHP-FPM
- 从dockerhub拉取PHP-FPM镜像
$ docker pull php:fpm
$ docker run --name php-fpm -p 9000:9000 --link mysql:mysql -v /www/html:/var/www/html -v /www/php/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /www/php/php.ini:/usr/local/etc/php/php.ini -d php:fpm
找到容器中php.ini-production的位置
$ docker exec -it php-fpm bash
$ cd /usr/src/
$ xz -d php.tar.xz
$ tar -xvf php.tar
复制到本地
$ docker cp php-fpm:/usr/src/php-7.3.10/php.ini-production php.ini
Nginx
- 从dockerhub拉取nginx镜像并实例化
$ docker pull nginx
$ docker run --name nginx -p 80:80 --link php-fpm -v /www/html:/usr/share/nginx/html -v /www/nginx/default.conf:/etc/nginx/conf.d/default.conf -d nginx
此时web服务已可以正常运行,并可解析php文件。如果要安装ThinkPHP或phpcms等,还要安装相关的php扩展,因此需要对官方镜像进行重新编译,下面是用到的Dockerfile,这个文件放在/www目录下
PHP-FPM支持ThinkPHP、phpcms
v1.0
Base images
FROM php:7.3.10-fpm
MAINTAINER moore "lee_moore@foxmail.com"
设置时区
ENV TZ=Asia/Shanghai
RUN echo $TZ > /etc/timezone
将主机配置文件上传至镜像中
ADD php/www.conf /usr/local/etc/php-fpm.d/www.conf
ADD php/php.ini /usr/src/php/php.ini
更换中科大源(非必须)
RUN echo "deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free\ndeb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free" > /etc/apt/sources.list
安装相关扩展
RUN apt update && apt install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install mysqli
#开放9000端口
EXPOSE 9000
删除原来的php-fpm容器,已新编译的php-fpm镜像新启动一个容器
$ cd /www
$ docker build -t php-fpm:v1 ./
$ docker run --name php-fpm -p 9000:9000 --link mysql:mysql -v /www/html:/var/www/html -v /www/php/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /www/php/php.ini:/usr/local/etc/php/php.ini -d php:fpm:v1
此时LNMP环境部署完毕
Original: https://www.cnblogs.com/captainmoore/p/11670642.html
Author: captainmoore
Title: Docker配置LNMP环境
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607742/
转载文章受原作者版权保护。转载请注明原作者出处!