Docker 搭建 lnmp 环境

一、docker 安装MySQL

  • 远程拉取镜像 docker pull mysql[:tag]

    例如:
    docker pull mysql 拉取最新版本;
    docker pull mysql:5.6 拉取5.6版本

  • 查看拉下来的MySQL镜像 docker images
    Docker 搭建 lnmp 环境

  • 运行并启动一个容器

    docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 \
    -v /data/mysql/data:/var/lib/mysql:rw  \ 
    -v /data/mysql/log:/var/log/mysql:rw   \
    -v /etc/localtime:/etc/localtime:ro    \
    --name mysql8 mysql:latest

    参数说明:
    -d : 让容器在后台运行
    -p : 添加主机到容器的端口映射
    -e : 设置环境变量。此处是设置root用户的初始密码,这个必须设置
    -v : 添加目录映射。即宿主机的 /data/mysql/data 与容器中的 /var/lib/mysql 是同步的 。 mysql/data 是数据库文件存放的地方,必须要挂载到容器外,否则容器重启一切数据消失。
    --name : 容器的名字
    rw : 读写
    ro : 只读

  • 查看创建的容器 docker ps
    Docker 搭建 lnmp 环境

二、docker 安装php-fpm

  • 远程拉取镜像 docker pull php:7.3-fpm
  • 查看拉下来的 php 镜像
    Docker 搭建 lnmp 环境
  • 创建 php-fpm 容器
docker run -d -p 9000:9000   \
-v /data/nginx/html:/var/www/html   \ 
--name php73fpm   \
--link mysql8:mysql   \
php:7.3-fpm

参数说明:
--link : --link <name or id>:alias 与另外一个容器建立起联系 ,此处是建立与mysql容器的联系

  • 查看创建的容器 docker ps
    Docker 搭建 lnmp 环境

  • 在容器里安装扩展模块

    • docker exec -it php73fpm /bin/bash 进入php-fpm容器
    • docker-php-ext-install mysqli 安装mysqli扩展
  • 查看扩展模块是否安装成功 php -m

三、docker 安装 nginx

  • 远程拉取nginx镜像 docker pull nginx

  • 从容器中将nginx配置文件导出到宿主机上

    • docker cp nginx80:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf
    • docker cp nginx80:/etc/nginx/conf.d/default.conf /data/nginx/conf.d/default.conf

      说明:因为要从容器中导出配置文件,所以可以先创建一个nginx的容器。
      例如:docker -d -p 80:80 --name nginx80 nginx:latest
      注意: 配置文件导出后,记得删除刚创建的容器 docker rm -f nginx80

  • 修改配置文件 vim /data/nginx/conf.d/default.conf

    server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.php$ {
        root            /var/www/html; //php-fpm容器,映射的目录地址
        fastcgi_pass   php73:9000; // 这里的php73,是创建nginx容器时,--link 选项中链接php容器的别名
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  
        include        fastcgi_params;
    }
    }
    • 创建并运行nginx容器
    docker run -d -p 80:80 \
    -v /data/nginx/html:/usr/share/nginx/html  \
    -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  \
    -v /data/nginx/conf.d:/etc/nginx/conf.d \
    -v /data/nginx/logs:/var/log/nginx \
    --link php73fpm:php73 \
    --name nginx80 nginx:latest
    • 查看启动的容器 docker ps
      Docker 搭建 lnmp 环境
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 6

发的这是啥???划水吗?

4年前 评论
冷无缺

@huanbird 这会正在写,前面是看了下格式。 :smiley:

4年前 评论

@冷无缺 哈哈 快写啊 学习学习

4年前 评论
冷无缺

@huanbird 我也是刚学习,一边看文档实现,一边记录下笔记。 :smile:

4年前 评论
sison1234

这啥 :joy:

4年前 评论
冷无缺

@sison1234 还请指教

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!