window 10系统 在docker里搭建lnmp环境

Posted mr.杰瑞

tags:

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

首先说一下子,这里的lnmp的l不是linux 是laravel框架 哈哈哈

  • 安装centos下载centos7
    这篇文章是下载的图形界面
    在图形界面使用 ctrl+alt+F2切换到dos界面
    dos界面 ctrl+alt+F2切换回图形界面

进入dos界面 查看当前的默认界面形式:

systemctl get-default

结果出现:
图形化界面

graphical.target

命令行界面

multi-user.target

设置系统默认的界面形式(需要进入到root模式)

设置为图形化界面:

systemctl set-default graphical.target

设置为命令行界面:

systemctl set-default multi-user.target

如果出现 interactive authentication required 说明没有用root角色运行
切换root角色

su

重新运行。查看当前默认开启的是图形还是命令行

重启系统

reboot

在这里插入图片描述
基础设施ok

  • 安装docker

yum安装

yum install -y docker

在这里插入图片描述
查看是否安装完成

docker version

在这里插入图片描述
报错来了,这个报错是因为etc/docker 下面没有daemon.json文件,那我们创建一个
编辑daemon.json文件

{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}


重启docker

systemctl restart docker.service

在这里插入图片描述
这下没有报错了
附带一下docker 命令

systemctl start docker   # 启动docker
systemctl stop docker    # 停止docker
systemctl status docker  # 查看docker状态
systemctl restart docker # 重新启动docker
docker search nginx命令查找 Docker Hub 上的 nginx 镜像
  • docker搭建lnmp环境
    1.下载php
docker pull php:7.4-fpm
docker run -p 9000:9000 -d --name php -v /docker/www:/docker/www --privileged=true php:7.4-fpm
-p 9000:9000 :将容器的9000端口映射到主机的9000端口
-d 后台运行(守护进程)
--name php:将容器命名为php
-v 将主机中当前目录下的www挂载到容器的www目录

查看php-fpm服务ip

docker inspect php | grep "IPAddress"

在这里插入图片描述

2.下载nginx

在这里插入图片描述
创建nginx配置

 cd /docker/nginx
 touch default.conf
 vim default.conf
 server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    root /docker/www/blog/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /docker/www/blog/public;
    }

    location ~ \\.php$ {
        root /docker/www/blog/public;
        fastcgi_pass   172.17.0.2:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}



```bash
docker run -p 80:80 -d --name nginx2 -v /docker/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /docker/www:/docker/www  --privileged=true nginx

-p 80:80:将容器的80端口映射到主机的80端口
-d 后台运行(守护进程)
–name nginx:将容器命名为nginx
-v 将主机中当前目录下的www挂载到容器的www目录
在这里插入图片描述
又来报错,没事继续解决
问题是,没有开启转发,网桥配置完后,需要开启转发,不然容器启动后,就会没有网络,配置/etc/sysctl.conf,添加net.ipv4.ip_forward=1

vim /etc/sysctl.conf
#配置转发
net.ipv4.ip_forward=1
#重启服务,让配置生效
systemctl restart network

#查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功

sysctl net.ipv4.ip_forward

在这里插入图片描述
ps: 我中间改了一下nginx配置
重新加载配置

docker-composer restart nginx-lsb #这个要下载好几个包 我懒我用下面这种
docker restart nginx2 #重启nginx (nginx2是我起的别名  )

在这里插入图片描述

嗯嗯 这里是没有权限

cd /docker/www
chmod -R 777 lmrs-2008

在这里插入图片描述
很nice

继续安装mysql

docker pull mysql
vim /etc/my.cnf

添加配置文件

[client]
port		= 3306
socket		= /tmp/mysql.sock

[mysqld]
secure_file_priv=/var/lib/mysql
port		= 3306
socket		= /tmp/mysql.sock
datadir = /usr/local/mysql/data
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 100G
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 4K
read_buffer_size = 768K
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
tmp_table_size = 32M
default_authentication_plugin = mysql_native_password
lower_case_table_names = 1
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535

log-bin=mysql-bin
binlog_format=mixed
server-id = 1
binlog_expire_logs_seconds = 600000
slow_query_log=1
slow-query-log-file=/usr/local/mysql/data/mysql-slow.log
long_query_time=3
early-plugin-load = ""

innodb_data_home_dir = /usr/local/mysql/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/data
innodb_buffer_pool_size = 128M
innodb_log_file_size = 64M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 1
innodb_write_io_threads = 1

[mysqldump]
quick
max_allowed_packet = 500M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

开启mysql

docker run -p 3306:3306 -d --name mysql -v /etc/my.cnf:/etc/mysql/my.cnf --privileged=true -e MYSQL_ROOT_PASSWORD=root mysql

-p 3306:3306 :将容器的3306端口映射到主机的3306端口
-d 后台运行(守护进程)
–name mysql:将容器命名为mysql
-v 将主机中的mysql配置挂载到容器的/etc/mysql/my.cnf

进入容器内部,查看是否能运行mysql

docker exec -it mysql bash
mysql -uroot -p

在这里插入图片描述

很耐思

用navicat连接一下子

在这里插入图片描述

未完待续 之后更新一下 swoole怎么加速laravel框架

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

在windows环境里,用Docker搭建Redis开发环境(新书第一个章节)

Windows10系统下在Docker中部署静态网站

Docker在window10下搭建SWOFT开发环境

docker-ce私有仓库搭建

Docker在window10下搭建SWOFT开发环境

window docker的安装