Docker安装lnmp环境--完美篇

软件下载

  • php下载: docker pull php:7.4.8-fpm
  • nginx下载: docker pull nginx
  • mysql下载: docker pull mysql

启动容器,查看配置目录

docker run -itd --name=my-php php:7.4.8-fpm

docker run -itd --name=my-nginx nginx

docker run -itd --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 be0db

容器内配置文件目录介绍

  • php配置文件目录: /usr/local/etc/
  • php项目目录: /var/www/html/
  • nginx项目根目录: /usr/share/nginx/html/
  • nginx配置文件目录: /etc/nginx/
  • nginx日志目录: /var/log/nginx/
  • mysql数据文件目录: /var/lib/mysql/
  • mysql配置文件目录: /etc/mysql/

创建本地宿主机挂载目录

  • mkdir -p /data/nginx/{conf,html,logs}
  • mkdir -p /data/php/{conf,html}
  • mkdir -p /data/mysql/{conf,data}

拷贝容器内配置文件到宿主机

docker cp 容器名:/容器目录/文件名 /宿主机目录/文件名

  • 复制php配置到本地:

    docker cp aca90:/usr/local/etc /data/php/conf
  • 复制nginx配置文件到本地:

    docker cp 40be:/etc/nginx /data/nginx/conf
  • 复制mysql数据文件到本地
    docker cp 580d:/var/lib/mysql /data/mysql/data
  • 复制mysql配置文件到本地
    docker cp 580d:/etc/mysql /data/mysql/conf

注意: 拷贝容器配置到本地后删除该容器

启动容器

启动mysql

docker run -itd --name=mysql-8 \
    -p 3306:3306 \
    -v /data/mysql/data/mysql:/var/lib/mysql \
    -v /data/mysql/conf/mysql:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:latest

启动php

docker run -itd --name=php7.4.8-fpm \
    -v /data/php/conf/etc:/usr/local/etc \
    -v /data/nginx/html:/var/www/html \
    --link mysql-8:php-mysql8 \
    php:7.4.8-fpm
  • –name=php7.4.8-fpm 将容器命名为php7.4.8-fpm
  • -v /data/nginx/html:/var/www/html 将主机中的目录挂载到容器的/var/www/html目录

注意: php容器连接mysql容器后,PHP连接数据库,不需要用ip了,直接用容器别名或者容器id替代ip,更安全;

启动nginx

docker run -itd --name=nginx-php7.4.8-fpm \
    -p 80:80 \
    -v /data/nginx/conf/nginx:/etc/nginx \
    -v /data/nginx/logs:/var/log/nginx \
    -v /data/nginx/html:/usr/share/nginx/html \
    --link php7.4.8-fpm:php748 \
    nginx:latest

配置nginx支持php

location ~ \.php$ {
        #root           html;
        fastcgi_pass   php748:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
        include        fastcgi_params;
    }
  • fastcgi_pass php748:9000; php748是nginx互联php的php容器的别名,如果不这样写,就需要替换成php容器的内网ip,建议用容器互联的别名;
  • fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; 其中/var/www/html是php容器中php文件的存储路径;

php配置文件php.ini

  • step1: 通过phpinfo()查看配置: Configuration File (php.ini) Path: /usr/local/etc/php
  • step2: 在容器内/usr/local/etc/php目录下有三个文件,其中php.ini-development等;
  • step3: 在宿主机对应的目录执行:

    mv php.ini-development php.ini

备注

  • nginx要支持php-fpm,所以先安装php;
  • php需要支持mysql扩展, 需要先安装mysql;
  • 容器的创建,一般都要挂载配置文件和数据文件;
  • 数据比较重要,所以启动mysql容器需要挂在目录到本地持久化,容器里面数据变化,本地也会变化,这样容器出问题后,只要删除容器,重新挂载一下本地目录就可以了,文件数据不会丢失;
  • -e MYSQL_ROOT_PASSWORD=123456 启动容器的时候,往里面传参,设置mysql的root密码;
  • 此时,本地工具连接mysql报错,提示caching_sha2_password这是mysql8的一个特点,需要安装一个插件,我们此时需要对mysql密码进行重新设置;
  • 进入容器中,进入mysql;修改mysql密码

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

    在mysql中修改root密码,任意地址可连接;
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值