docker搭建lnmp环境

Posted dylan.zhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker搭建lnmp环境相关的知识,希望对你有一定的参考价值。

下载docker

uname -r  查看内核版本
sudo yum update  更新yum包
sudo yum remove docker  docker-common docker-selinux docker-engine  卸载旧版本(如果安装过旧版本,否则忽略)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2  安装需要依赖yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  设置yum源
yum list docker-ce --showduplicates | sort -r  查看仓库中所有的docker版本
sudo yum install docker-ce  #下载指定版本的docker
sudo systemctl start docker  设置开机启动
docker images 查看docker镜像列表

docker安装nginx

首先要创建需要的本地目录文件,方便后面做映射
cd /usr/local
mkdir nginx
cd nginx
mkdir conf conf.d logs
项目映射文件 /usr/local/www  注意nginx和php容器里面的html都需要映射到这个目录,否则配置nginx会出错

docker search nginx  搜索nginx版本
docker pull nginx  默认拉去官方最新的nginx镜像
docker run --name nginx -p 80:80 -d nginx 创建并允许nginx容器,绑定映射端口
docker ps -a 查看docker运行容器
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf 将容器内的nginx配置文件复制到本地
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf.d 将容器内的nginx配置文件复制到本地
docker stop nginx 停止nginx容器
docker rm nginx 删除容器
docker run -p 80:80 --name nginx -v /usr/local/www:/usr/share/nginx/html -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/conf.d:/etc/nginx/conf.d -v /usr/local/nginx/logs:/var/log/nginx -d nginx 创建nginx容器以及文件映射
说明: -p 端口映射 --name 容器别名 -d 运行容器 -v 文件映射
访问127.0.0.1 出现nginx欢迎界面

docker安装php

docker search php 搜索php官方镜像
docker pull php:7.4-fpm 拉去对应版本的php镜像
docker run -p 9000:9000 --name php74 -v /usr/local/www:/var/www/html  -d php:7.4-fpm  创建php容器并允许

docker安装mysql

docker search mysql 搜索mysql镜像
docker pull mysql 拉取镜像
docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql 创建容器
docker exec -it mysql /bin/bash 进入mysql容器
mysql -uroot -p 进入mysql
GRANT ALL ON *.* TO 'root'@'%'; 授权
flush privileges; 刷新权限
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;  更新加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 更新root用户密码
flush privileges;  刷新权限

配置nginx解析php

server {
    listen       80;
    server_name  127.0.0.1;

    #access_log  /var/log/nginx/host.access.log  main;

	# nginx容器内对应的路径
    root /usr/share/nginx/html;	
    location / {
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \\.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \\.php$ {
    		# php容器里面对应的文件
	        root 	      /var/www/html/;	 
	        # 用来指定php-fpm监听的地址
            fastcgi_pass   127.0.0.1:9000;
            # 设定访问根目录默认去找的文件
            fastcgi_index  index.php;
            # 设置访问根目录时默认寻找的文件
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;	
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\\.ht {
    #    deny  all;
    #}
}

以上是关于docker搭建lnmp环境的主要内容,如果未能解决你的问题,请参考以下文章

Mac下docker搭建lnmp环境 + redis + elasticsearch

docker搭建lnmp环境

docker搭建 LNMP 环境

docker搭建lnmp环境

docker搭建自己的Lnmp环境+宝塔

docker部署lnmp环境搭建php项目