首页 > 系统相关 >【环境搭建】docker+nginx部署PHP

【环境搭建】docker+nginx部署PHP

时间:2023-04-03 12:47:40浏览次数:45  
标签:容器 kali nginx conf home docker PHP

目的

使用docker容器完成nginx的安装以及部署PHP网页

步骤

一、 安装nginx

1. 拉取Nginx镜像

docker pull nginx       //拉取镜像
docker images           //查看本地镜像

这里注意需要记一下nginx的IMAGE ID,我这里的ID是605c

2. 创建Nginx容器

docker run --name nginx-test -p 80:80 -d nginx
  • docker run : 是创建一个新容器并运行一个命令
  • --name : 给容器起一个名字,指的是 nginx-test
  • -p : 指定宿主机与容器内部端口的映射关系,-p [宿主机端口]:[容器内部端口],
  • -d : 设置容器在在后台一直运行
  • 最后面的 nginx 是镜像名称,也可以是镜像ID,例如上面提到的 “605c”

创建容器后使用docker ps即可查看正在运行的容器,这里我的容器ID是 902f

访问这台机器的ip加上端口号,如果返回Welcom to nginx则成功(如果设置映射的端口是80则可以不加端口)

3. 挂载文件

我们可以使用docker exec -it 902f /bin/bash进入容器内部进行配置文件的管理(容器就是一台linux机器),但是比较麻烦,我们可以将这台容器的文件挂载到我们本机,这样我们只要在本机修改文件即可。
容器内部的文件路径如下

/etc/nginx          //配置文件目录
/usr/share/nginx/html     //默认html文件目录
/var/log/nginx        //日志文件

在合适的路径下新建nginx目录,这里我选择在/home/kali/下创建,进入/home/kali/nginx,然后将容器内的nginx.confdefault.conf分别复制到/home/kali/nginx/home/kali/nginx/conf

docker cp 902f:/etc/nginx/nginx.conf ./
docker cp 902f:/etc/nginx/conf.d/default.conf ./conf/

注意容器ID不要填错,然后停止并删除这个容器,重新新建一个容器

docker stop 902f     //停止容器
docker rm 902f      //删除容器

新建容器,注意以下冒号前面的路径是刚才自己在本地新建的路径,冒号后面的是容器内的路径

docker run --name nginx-config -p 80:80 -v /home/kali/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/kali/nginx/logs:/var/log/nginx -v /home/kali/nginx/html:/usr/share/nginx/html -v /home/kali/nginx/conf:/etc/nginx/conf.d \
--privileged=true -d 605c                 //这里的605c是镜像ID

-v:挂载目录,-v[宿主机路径]:[容器内路径]

完成后本机的nginx路径下会有如下文件,说明成功

更改nginx文件夹的权限chmod -R 777 ./nginx
/home/kali/nginx/html目录下添加网页即可访问,到此Nginx的安装已经结束,删除此容器

docker stop 916
docker rm 916

二、 安装PHP

1. 拉取PHP镜像

docker pull php:7.4-fpm         //拉取PHP镜像
docker images                   //查看本地镜像

记下PHP的IMAGE ID是 854

2. 创建PHP容器同时挂载文件

docker run --name php-test -v /home/kali/nginx/html:/www -p 9000:9000 -d 854

--name:给容器起名为php-test
-v :挂载目录

docker run --name nginx-test -p 80:80 -v /home/kali/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/kali/nginx/logs:/var/log/nginx -v /home/kali/nginx/html:/usr/share/nginx/html -v /home/kali/nginx/conf:/etc/nginx/conf.d \
--privileged=true --link php-test:php -d 605c               //这里的605c是镜像ID

--link:把 php-test 容器的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-test

修改/home/kali/nginx/conf/default.conf为以下内容

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /www;
        index  index.html index.htm index.php;
    }

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

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
        include        fastcgi_params;
    }
}

docker restart [container_id]重启容器,在html文件夹中添加php文件访问即可

标签:容器,kali,nginx,conf,home,docker,PHP
From: https://www.cnblogs.com/MrSoap/p/17282732.html

相关文章

  • docker安全设置
    限制容器之间的网络流量默认情况下,同一主机上的容器之间允许所有网络通信。如果不需要,请限制所有容器间的通信。将需要相互通信的特定容器链接在一起。默认情况下,同一主机上所有容器之间都启用了不受限制的网络流量。因此,每个容器都有可能读取同一主机上整个容器网络上的所有......
  • Docker-mongo
    Docker-mongomkdir-p/data/mongo/datadirdockerrun--nameedc-mongo-p27017:27017--restart=always-eMONGO_INITDB_ROOT_USERNAME=root-eMONGO_INITDB_ROOT_PASSWORD=12345678-v/data/mongo/datadir:/data/db-dmongo下载Debeziumwgethttps://repo1.mav......
  • nginx 热加载stream模块
    报错:nginx:[emerg]unknowndirective"stream"in/usr/local/nginx/conf.d/ssh.conf判断模块是否存在 进入二进制部署包解压后目录 添加模块,与之前加载的模块一致,并新添加 --with-stream模块./configure--prefix=/usr/local/nginx--user=nginx--group=nginx......
  • php查找判断二维数组中是否含有某个值
    $arr=array(array('a','b'),array('c','d'));in_array('a',$arr);//此时返回的永远都是falsedeep_in_array('a',$arr);//此时返回true值functiondeep_in_array($value,$array){forea......
  • docker 容器内安装ps命令
    转载自:https://blog.csdn.net/HXNLYW/article/details/88127414============= dockerexec-it793d8/bin/sh进入容器内,使用ps-ef|grepjava报了错: 问题出在docker容器linux没有安装procps工具在命令行中输入:apt-getupdate&&apt-getinstallprocps 敲下回......
  • ubantu docker
     docker.service[Unit]Description=DockerApplicationContainerEngineDocumentation=https://docs.docker.comBindsTo=containerd.serviceAfter=network-online.targetfirewalld.servicecontainerd.serviceWants=network-online.targetRequires=docker.socket......
  • php爬虫框架盘点
    大数据分析必定少不了数据抓取,只有拥有海量的数据才能对数据进行对比分析。因此,网页爬虫是作为程序员必须要懂得技能,下文我将通过文字形式记录下php的爬虫框架的一些内容。GoutteGoutte库非常有用,它可以为您提供有关如何使用PHP抓取内容的出色支持。基于Symfony框架,它提供了API来抓......
  • php爬虫框架盘点
    大数据分析必定少不了数据抓取,只有拥有海量的数据才能对数据进行对比分析。因此,网页爬虫是作为程序员必须要懂得技能,下文我将通过文字形式记录下php的爬虫框架的一些内容。GoutteGoutte库非常有用,它可以为您提供有关如何使用PHP抓取内容的出色支持。基于Symfony框架,它提供了API......
  • docker mysql
    -eMYSQL_ROOT_PASSWORD=my-secret-pw-v/my/custom:/etc/mysql/conf.ddockerrun-it--rmmysql:tag--verbose--helpdockerrun--namesome-mysql-v/my/own/datadir:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456-dmysql:tagdockerrun--namesome-mysql-e......
  • nginx上传文件超出默认大小限制-附件,提示:413 Request Entity Too Large
    Nginx限制文件上传大小,相应配置参数:client_max_body_size注意:该参数在nginx.conf中默认是没有配置的,不配置的情况下,nginx默认限制请求附件大小为:1M。即:默认当你通过nginx代理上传附件,大于1M的文件时,浏览器会抛出如下异常。处理方式:找到nginx的配置文件nginx/conf/nginx.conf,......